問題: 一個根文件夾,底下包含多級目錄,每一級又存在多個個子文件夾,每個文件夾裡面又存在多個文件。 如果要刪除所有子文件又保存最頂級的目錄文件夾,那采用什麼辦法處理好呢? 處理方法 1、 直接刪除根文件夾,然後再創建根文件夾。 void deleteAllFile(string path) { Directory.Delete(path,true); Directory.CreateDirectory(path); } 2、遍歷所有子目錄文件夾的文件,逐個刪除。 /// <summary> /// 遍歷文件夾及子文件夾所有文件 /// </summaryd> /// <c>string dir=ListFiles(new DirectoryInfo(dir));</c> /// <param name="fileDirectory">文件夾目錄路徑</param> /// <returns>返回ArrayList對象</returns> public static System.Collections.ArrayList ListFiles(string fileDirectory) { ArrayList arylist = null; if (Directory.Exists(fileDirectory)) { DirectoryInfo dinfo = new DirectoryInfo(fileDirectory); if (dinfo != null) { FileSystemInfo[] files = dinfo.GetFileSystemInfos(); for (int i = 0; i < files.Length; i++) { FileInfo file = files[i] as FileInfo; if (file != null) { if (arylist == null) arylist = new ArrayList(); arylist.Add(file); } else { ListFiles(files[i].FullName); //對於子目錄,進行遞歸調用 } } } } return arylist; } 用第一個方法最直接,不用遞歸,不用遍歷,但調用系統的方法,不知道內部原理怎麼運行的。 總體來說應該是第一種方法比第二種方法的性能要好!待進一步求證。 刪除一個文件夾下所有文件可以用如下文件方法。 void deleteAllFile(string path) { foreach (string dirStr in Directory.GetDirectories(path)) { www.2cto.com DirectoryInfo dir = new DirectoryInfo(dirStr); } ArrayList folders=new ArrayList(); FileSystemInfo[] fileArr = dir.GetFileSystemInfos(); for (int i = 0; i < folders.Count; i++) { FileInfo f = folders[i] as FileInfo; if (f == null) { DirectoryInfo d = folders[i] as DirectoryInfo; d.Delete(); } } }