2013-02-27 58 views
0

我需要刪除帶有「.bak」和「.csv.bak」擴展名的文件。我使用.net c#。如何刪除備份文件

我想是這樣的:

 string srcDir = @"D:\Backup"; 

     string[] bakList = Directory.GetFiles(srcDir,".bak"); 

     if (Directory.Exists(srcDir)) 
     { 
      foreach (string f in bakList) 
      { 
       File.Delete(f); 
      } 
     } 

但是,當調試,bakList數組爲空。

Directory.GetFiles()未加載陣列中的文件名。我無法弄清楚我的編碼有什麼問題。

+1

更改過濾器 「名爲* .bak」,而不是 「.bak的」。 – 2013-02-27 07:12:49

+0

@JayRiggs雅我做到了這一點......但那些文件也沒有刪除目錄中。我的文件的格式爲「Data Logger [0] .csv.bak」,我應該將其作爲「* .csv.bak」還是「* .bak」? – kousalyarajan 2013-02-27 09:23:24

+0

我是否需要創建源目錄和目標目錄,以便我可以從src複製到dest並從dest文件夾中刪除這些文件。這是強制性的嗎? – kousalyarajan 2013-02-27 09:31:53

回答

2

您需要GetFiles()

string srcDir = @"D:\Backup"; 
string[] bakList = Directory.GetFiles(srcDir,"*.bak"); 

if (Directory.Exists(srcDir)) 
{ 
    foreach (string f in bakList) 
    { 
     File.Delete(f); 
    } 
} 

.bak之前加入*如果你需要尋找這兩種類型也許效果更好

var files = Directory.GetFiles(srcDir, "*.*") 
      .Where(s => s.EndsWith(".bak")); 
+2

更好的提及你所做的改變,並解釋如何幫助你的答案。 *不容易區分:) – ryadavilli 2013-02-27 07:36:36

+0

我做了,感謝您的建議。 – 2013-02-27 07:40:18

+0

@kousalyarajan我優化了'Directoty.GetFiles'的過濾器,現在檢查它。 – 2013-02-27 09:09:25

0

如果你的文件名是

「數據記錄器[2] .csv.bak「, 轉到屬性並檢查文件的類型。它會是這樣的

「1文件(.1)」。該文件具有數字作爲其結尾擴展名。所以我用這個。

串[] BK = Directory.GetFiles(SRCDIR 「* .BAK *。」);

foreach(字符串f in bk) { File.Delete(f); }

其工作...

相關問題