2016-06-10 57 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