繁体   English   中英

删除除3个文件以外的所有文件VB.NET

[英]Delete all files except 3 files VB.NET

我有这个代码

 Private Sub DeleteOldFiles(
        ByVal AsDirectoryName As String,
        ByVal AbDeleteSubDirectories As Boolean,
        ByVal AbDeleteFolders As Boolean)

        If AbDeleteSubDirectories Then
            Dim m_sSubdirectoryName As String

            For Each m_sSubdirectoryName In
            System.IO.Directory.GetDirectories(AsDirectoryName)
                DeleteOldFiles _
                    (m_sSubdirectoryName,
                    AbDeleteSubDirectories,
                    AbDeleteFolders)

                If AbDeleteFolders Then
                    System.IO.Directory.Delete(m_sSubdirectoryName)
                End If
            Next
        End If

        Dim m_sFileName As String

        For Each m_sFileName In
        System.IO.Directory.GetFiles(AsDirectoryName)
            If m_sFileName <> "p2ptv_preview01.zip" Then
                System.IO.File.Delete(m_sFileName)
            End If
        Next

和DeleteOldFiles(“ ./”,True,True)在按钮控件上。 但是,此代码仅适用于一个文件。 我想除了更多的文件。 我怎样才能做到这一点?

只需传入您不想删除的免除文件列表,然后查看当前文件名是否在该列表中。

Private Sub DeleteOldFiles(
    ByVal AsDirectoryName As String,
    ByVal AbDeleteSubDirectories As Boolean,
    ByVal AbDeleteFolders As Boolean,
    ByVal exemptFileNames As IEnumerable(Of String))

    If AbDeleteSubDirectories Then
        Dim m_sSubdirectoryName As String

        For Each m_sSubdirectoryName In
        System.IO.Directory.GetDirectories(AsDirectoryName)
            DeleteOldFiles _
                (m_sSubdirectoryName,
                AbDeleteSubDirectories,
                AbDeleteFolders,
                exemptFileNames)

            If AbDeleteFolders Then
                System.IO.Directory.Delete(m_sSubdirectoryName)
            End If
        Next
    End If

    Dim m_sFileName As String

    For Each m_sFileName In
    System.IO.Directory.GetFiles(AsDirectoryName)
        If exemptFileNames.Contains(m_sFileName) Then
            Console.WriteLine("Skipped " & m_sFileName)
        Else
            System.IO.File.Delete(m_sFileName)
        End If
    Next
End Sub

用法:

Sub Main()
    Dim exemptFilenames As New List(Of String)()
    exemptFilenames.Add("p2ptv_preview01.zip")
    exemptFilenames.Add("name2.txt")
    exemptFilenames.Add("name3.tar")
    DeleteOldFiles("./", True, True, exemptFilenames)
End Sub

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM