VB删除匹配列表的文件

时间:2016-06-10 23:39:32

标签: vb.net

好的,我正在创建一个小而简单的程序来管理给定目录中的某些文件。但是,该程序有多个设置,根据设置删除某些文件。对于经验丰富的编码人员来说,我有两个障碍无疑是容易的......首先,如何创建包含文件名的列表?然后如何比较给定目录中的顺序文件清单?理想情况下,我希望代码为多个列表生成预先确定的文件名列表。例如:

List1 -

FileName1.png
FileName2.png

Lst 2 -

FileName3.png
FileName4.png

到目前为止,这是我的代码......

Dim Path As String = "C:\SampleFolder\"

    'Check if files match file names in list if so delete

    For Each file In Path
        If fileName = List1 Then
            'delete file
        Else
            'do nothing to that file.
        End If
    Next

基本上我如何构建列表我可以轻松地比较文件名,以便我可以删除文件与列表匹配?

2 个答案:

答案 0 :(得分:2)

创建列表的最佳方法是使用List类。然后,您可以使用For Each循环来处理列表中的每个项目。您可以使用IO.File.Exists检查文件是否存在,然后IO.File.Delete将其删除。

Dim list1 As New List(Of String) From {"FileName1.png", "FileName2.png"}

For Each listFile As String In list1
    Dim filePath As String = IO.Path.Combine("C:\SampleFolder", listFile)
    If IO.File.Exists(filePath) Then IO.File.Delete(filePath)
Next

答案 1 :(得分:1)

Dim List1 As New List(Of String)
Dim List2 As New List(Of String)

Sub Main()

    Dim files() As String = System.IO.Directory.GetFiles("C:\SampleFolder")

    List1.Add("FileName1.png")
    List1.Add("FileName2.png")
    List2.Add("FileName3.png")
    List2.Add("FileName4.png")

    ProcessFiles(files, List1)
    ProcessFiles(files, List2)

End Sub

Private Sub ProcessFiles(files() As String, l As IList(Of String))

    For Each f As String In files
        If l.Contains(System.IO.Path.GetFileName(f)) Then
            'delete file
        End If
    Next

End Sub