C#删除文件

问题描述:

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

这样做的最好方法是什么?

+2

使用'guid'文件名可能会更好,以确保唯一性... – 2010-08-02 08:42:05

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网站的昂贵。你也需要确保同时发出的请求不会抛出异常!

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

这听起来相当昂贵,在页面加载 - 我会做一个计时器或类似的东西。

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

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(); 
}