[英]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.