2013-02-27 63 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); }

其工作...