1. 程式人生 > >C#/.NET中刪除指定資料夾下所有檔案和資料夾的幾種方法彙總

C#/.NET中刪除指定資料夾下所有檔案和資料夾的幾種方法彙總

我們知道,在C#/.NET中的System.IO名稱空間下,都是關於檔案和資料夾資訊操作的類。如果在開發中有刪除指定資料夾下所有檔案和資料夾這樣的需要,應該如何使用C#/.NET來實現這個需求呢?方法一:直接刪除整個指定資料夾使用使用Directory.Delete("資料夾路徑",true)方法,然後重建這個資料夾【暴力,直接】,具體操作如下:
Directory.Delete(fileDir,true);
Directory.CreateDirectory(fileDir);
雖然以上這個方法簡單,但不推薦使用。方法二:分步刪除指定資料夾中的檔案和資料夾。因為從指定資料夾中獲取檔案列表和獲取資料夾列表使用的是不同的方法,所以,我們即要刪除檔案,也要刪除檔案的話就必須分兩步,第一步刪除所有檔案,第二步刪除所有資料夾,我們來整理一下實現這個需求的大概步驟:1.使用Directory.GetFiles("資料夾路徑")獲取指定資料夾中所有的檔案;2.在1的基礎上遍歷所有檔案,使用File.Delete("檔案完整路徑")來刪除每個檔案;3.DirectoryInfo例項物件的GetDirectories檔案獲取所有的資料夾;4.在3的基礎上遍歷所有資料夾,使用DirectoryInfo例項的Delete方法刪除對應的資料夾。第一種(不使用靜態擴充套件方法),程式碼如下:
string directoryPath = "C:\指定的資料夾路徑";
Directory.GetFiles(directoryPath).ToList().ForEach(File.Delete);
Directory.GetDirectories(directoryPath).ToList().ForEach(Directory.Delete);

第二種(使用靜態擴充套件方法),程式碼如下:
public static void Empty(this System.IO.DirectoryInfo directory)
{
    foreach(System.IO.FileInfo file in
directory.GetFiles()) file.Delete(); foreach(System.IO.DirectoryInfo subDirectory in directory.GetDirectories()) subDirectory.Delete(true); }
使用C#/.NET的靜態方法的好處是,呼叫這個靜態方法比普通的方法更方便,如:
System.IO.DirectoryInfo directory = new System.IO.DirectoryInfo(@"C:\指定的資料夾路徑");
directory.Empty();