2015-08-15 66 views
0

我有一個目錄struture像這樣:如何刪除1次命中子目錄中的所有文件永久

C:\年\月\日\小時\分鐘

的「年」根向下都可以有多個子目錄

從「Day」子根開始,我希望刪除子子目錄內的所有文件和目錄。

當我說永久刪除,我的意思是不發送到回收站。

我發現他的代碼,將做到這一點:

using Microsoft.VisualBasic.FileIO: 

var files = GetAllFiles(suggested); 
foreach (var file in files) 
{  
    FileSystem.DeleteFile(file, UIOption.OnlyErrorDialogs,RecycleOption.DeletePermanently, UICancelOption.ThrowException);`          
} 

FileSystem.DeleteDirectory(suggested, UIOption.OnlyErrorDialogs,RecycleOption.DeletePermanently, UICancelOption.ThrowException); 

    private static IEnumerable<string> GetAllFiles(string rootDirectory) 
    { 
     foreach (var file in Directory.GetFiles(rootDirectory, "*", SearchOption.AllDirectories)) 
     { 
      yield return file; 
     } 
    } 

我很想做的是省略GetFilesMethod(路徑),做這樣的事情:

FileSystem.DeleteDirectory(suggested, UIOption.OnlyErrorDialogs,RecycleOption.DeletePermanently, UICancelOption.ThrowException, recursive=true, all contents); 

顯然,「遞歸= true,所有內容都是SUDO代碼。

感謝

回答

3

首先,我建議你指責慢LINQ前你做一些基準。

其次,你可以使用System.IO.Directory.Delete方法實現你所需要的(遞歸文件的永久刪除):

刪除指定的目錄,如果所指出的,在目錄中的所有子目錄和文件。

使用方法如下:

Directory.Delete(suggested, true); 
+0

完全正確它:)。不要誤解我的LINQ。這是優雅的,節省代碼寫作。在我使用密集處理的情況下,我發現它對我的需求很慢 - 但僅限於我的特定需求。謝謝 –

相關問題