[C#] 刪除唯讀檔案
2012-11-15
之前在測試Lucene.net 的時候,常發生一件事情,就是我有些檔案被設定成唯讀
造成我無法重新製作索引..
當我一般下刪除檔案或是檔案夾的時候
var dirInfo = new System.IO.DirectoryInfo(AppDomain.CurrentDomain.BaseDirectory.ToString() + "Source\\");
dirInfo.Delete(true);
會出現
查看之下是因為
檔案被設定成為唯讀..
網路上看一下,所以要先動一點手腳,必須要透過先設定屬性後將檔案刪除..
var dirInfo = new System.IO.DirectoryInfo(AppDomain.CurrentDomain.BaseDirectory.ToString() + "Source\\");
foreach (var file in dirInfo.GetFiles())
{
//先將所有的檔案屬性設定成一般 免得有的是唯讀
file.Attributes = System.IO.FileAttributes.Normal;
}
dirInfo.Delete(true);
最後附上遞迴強制刪除 這包含底下所有檔案跟目錄都會刪除
private void DeleteDirectoryRecursive(DirectoryInfo directoryInfo)
{
directoryInfo.Attributes = FileAttributes.Normal;
//刪除檔案
foreach (var file in directoryInfo.GetFiles())
{
file.Attributes = System.IO.FileAttributes.Normal;
file.Delete();
}
//遞迴向下探索刪除
foreach (var dirInfo in directoryInfo.GetDirectories())
{
DeleteDirectoryRecursive(dirInfo);
}
directoryInfo.Delete();
}
呼叫方式
DeleteDirectoryRecursive(new DirectoryInfo(AppDomain.CurrentDomain.BaseDirectory.ToString() + "Source\\"));