在我的代碼隱藏中,我正在將文檔保存到服務器上的文件夾中。如果文檔是臨時的,我將「_temp」添加到文件名中。在頁面加載時,我想檢查這些文檔所在的服務器文件夾,我想刪除任何臨時文檔。即以「_temp」結尾的文件。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