C#删除文件

时间:2010-08-02 08:36:25

标签: c# asp.net file

在我的代码隐藏中,我目前正在将文档保存到服务器上的文件夹中。如果文档是临时的,我将“_temp”附加到文件名。在页面加载时,我想检查保存这些文档的服务器文件夹,我想删除任何临时文档。即以“_temp”结尾的文件。

最好的方法是什么?

3 个答案:

答案 0 :(得分:4)

在页面加载时这样做听起来相当昂贵 - 我会在计时器上做这样的事情。

无论如何,您可以使用Directory.GetFiles查找与特定模式匹配的文件名。或者,如果您不想尝试正确使用模式,并且无论如何都不会有很多文件,您可以调用overload without the pattern并自行进行过滤。

答案 1 :(得分:4)

string[] files = 
Directory.GetFiles
  (@"c:\myfolder\", "*_temp.txt", SearchOption.TopDirectoryOnly); 

或使用linq

var files = from f in Directory.GetFiles((@"c:\MyData\SomeStuff")
    where f.Contains("_temp")
    select f;

获得所有文件后,您需要遍历结果并逐个删除它们。然而,这对于asp.net网站来说可能是昂贵的。您还需要确保同时发出的请求不会引发异常!

我建议将临时文件存储在单个目录中,而不是将它们放在与非临时文件共享的目录中。只是为了清晰和安心。

答案 2 :(得分:0)

string[] myFiles = Directory.GetFiles(@"C:\path\files");

foreach (string f in myFiles)
{
    File.Delete(f);
}

或者,如果你想使用FileInfo(虽然听起来你没有,但你永远不知道......)而不仅仅是文件名,你可以创建一个DirectoryInfo对象然后调用GetFiles()

DirectoryInfo di = new DirectoryInfo(@"c:\path\directory");
FileInfo[] files = di.GetFiles("*_temp.txt");

 foreach (FileInfo f in files)
 {
     f.Delete();
 }