2010-02-10 36 views
0

我正在使用MVC ASP.NET 3.5,我試圖用標準.NET方法刪除一個包含所有文件的文件夾,我一直使用.NET 2.0。我發現this但第一個答案似乎並不奏效。
我已經試過這一個Directory.Delete(path,true)總是給出錯誤 - ASP.NET 3.5 MVC

try 
{ 
    Directory.Delete(path, true); 
} 
catch (IOException) 
{ 
    Thread.Sleep(0); 
    Directory.Delete(path, true); 
} 

和工作,但我不明白爲什麼。
有什麼建議嗎?

編輯:我有權限,因爲所有的文件和子文件夾都被刪除了。但我有和路徑異常「目錄非空」。如果我使用提供的代碼,則無任何例外。

回答

1

即使使用資源管理器,此消息有時會顯示(至少對我而言)。如何刪除文件,然後刪除文件夾?

string[] files = Directory.GetFiles(some_path, "", SearchOption.AllDirectories); 
foreach (string pathFile in files) 
{ 
    File.Delete(pathFile); 
} 
Directory.Delete(some_path); 

你可以使用SearchOptions如果你有subfolers,但如果沒有,則使用簡單

string[] files = Directory.GetFiles(some_path); 

希望這有助於。

編輯

此問題發生的原因有很多(來吧其MS),但我認爲主要是:因爲文件夾是損壞或某些進程鎖定它,防止刪除。

一個非常好的解決方案可能是:首先刪除文件,然後刪除子文件夾,最後一步刪除主文件夾。

+0

你的方法可行,但問題是如果你有子文件夾,你必須刪除它們。此外,仍然沒有解釋這個錯誤。 – 2010-02-10 15:14:15

0

您是否有足夠的權限刪除該文件夾?另外,另一個問題是確保目錄是空的。

+0

我已經得到許可,因爲所有文件和子文件夾被刪除。但我有和路徑異常「目錄非空」。 如果我使用提供的代碼,則無任何例外。 – 2010-02-10 09:25:22

1

嘗試使用這種它爲我工作

File.SetAttributes(DownloaddirPath & "\" & directoryName, FileAttributes.Normal) 
    Directory.Delete(DownloaddirPath & "\" & directoryName, True) 
相關問題