2010-01-20 39 views
1

如果我在C#中使用文件,檢查文件是否被鎖定在C#中的最佳方法是什麼?寫入文件最佳實踐(鎖定文件/覆蓋)

如果我使用File.OpenWrite(),它返回一個FileStream,並且這返回CanWrite = false,這是一種檢查方式嗎?

另外,寫在我的代碼中的一個位置是什麼明智的?所以我指定了一個寫入路徑,像「TestExample.txt」,但是如果我運行我的代碼,成功寫入文件,再次運行,相同的數據將在那裏。是否有可能完全覆蓋文件中已有的數據?或者我需要手動刪除(我知道這聽起來很天真)。

感謝

回答

1

File.OpenWrite將拋出IOException如果文件被鎖定,所以調用該方法,然後檢查CanWrite屬性不會是一個好方法。您需要嘗試處理IOException

如果要替換文件的內容,你可以簡單地寫它(如果存在的話)之前將其刪除:

try 
{ 
    if (File.Exists(fileName)) 
    { 
     File.Delete(fileName); 
    } 
    using (FileStream stream = File.OpenWrite(fileName)) 
    using (StreamWriter writer = new StreamWriter(stream)) 
    { 
     writer.Write("your content"); 
    }   
} 
catch (IOException) 
{ 
    // the file is locked 
}