使用以下代碼正常刪除整個文件夾內容時,報錯如下:
if (backupPathDir.Exists) { System.IO.DirectoryInfo di = new DirectoryInfo(backupPathDir.ToString()); foreach (FileInfo file in di.GetFiles()) { file.Attributes = FileAttributes.Normal; file.Delete(); } foreach (DirectoryInfo dir in di.GetDirectories()) { dir.Delete(true); } backupPathDir.Delete(true); }
報錯如下:
原因:文件權限問題,文件從別的地方復制到備份文件夾時,權限也復制過來了,再刪除備份文件夾,刪除失敗
解決方法:
復制文件時,設置屬性,刪除文件時,再次設置屬性。
Delete File.SetAttributes(file, FileAttributes.Normal); File.Delete(file);
Copy File.Copy(file, dest, true); File.SetAttributes(dest, FileAttributes.Normal);
資料來源:
https://stackoverflow.com/questions/26577038/deleting-file-but-is-access-denied