2010-08-02 91 views
3

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

這樣做的最好方法是什麼?

+2

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

回答

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網站的昂貴。你也需要確保同時發出的請求不會拋出異常!

我建議臨時文件存儲在一個目錄中,而不是放在與非臨時文件共享的目錄中。只是爲了清晰和安心。

4

這聽起來相當昂貴,在頁面加載 - 我會做一個計時器或類似的東西。

無論如何,您可以使用Directory.GetFiles來查找與特定模式匹配的文件名。或者,如果您不想嘗試獲取正確的格式,並且無論如何都不會有多少文件,您可以撥打overload without the pattern並自行進行過濾。

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