在程序運行的時候,如果直接獲取一個目錄路徑,然后執行刪除(包括子目錄及文件):
System.IO.Directory.Delete(path,true);
或者
System.IO.DirectoryInfo downloadedMessageInfo = new DirectoryInfo(path);
downloadedMessageInfo.Delete(true);
如果手動在目錄里面復制一個文件然后再粘貼一個副本相當於添加文件或者目錄(而不是刪除)就會報錯:
{System.IO.IOException: 目錄不是空的。
at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
at System.IO.Directory.DeleteHelper(String fullPath, String userPath, Boolean recursive)
at System.IO.Directory.Delete(String fullPath, String userPath, Boolean recursive)
at System.IO.DirectoryInfo.Delete(Boolean recursive)
這樣的錯誤只有在svn的目錄里面才能出現,不知道為什么。
System.IO.DirectoryInfo downloadedMessageInfo = new DirectoryInfo(dirPath); foreach (FileInfo file in downloadedMessageInfo.GetFiles()) { file.Delete(); } foreach (DirectoryInfo dir in downloadedMessageInfo.GetDirectories()) { dir.Delete(true); }
也可以使用DirectoryInfo 擴展方法:
public static class DirectoryExtensions { 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); } }