C#删除文件
问题描述:
在我的代码隐藏中,我正在将文档保存到服务器上的文件夹中。如果文档是临时的,我将“_temp”添加到文件名中。在页面加载时,我想检查这些文档所在的服务器文件夹,我想删除任何临时文档。即以“_temp”结尾的文件。C#删除文件
这样做的最好方法是什么?
答
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();
}
使用'guid'文件名可能会更好,以确保唯一性... – 2010-08-02 08:42:05