[C#] 刪除唯讀檔案

2012-11-15

 

之前在測試Lucene.net 的時候,常發生一件事情,就是我有些檔案被設定成唯讀

造成我無法重新製作索引..

 

當我一般下刪除檔案或是檔案夾的時候

var dirInfo = new System.IO.DirectoryInfo(AppDomain.CurrentDomain.BaseDirectory.ToString() + "Source\\");
dirInfo.Delete(true);


會出現



2012-08-22_120006




查看之下是因為



2012-08-22_115701



檔案被設定成為唯讀..


網路上看一下,所以要先動一點手腳,必須要透過先設定屬性後將檔案刪除..




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\\"));


當麻許的超技八 2014 | Donma Hsu Design.