2016-06-10 58 views
0

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

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

创建列表的最好方法是使用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 
+0

谢谢你的帮助,你的解决方案证明是非常有用的。 – user2980316

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