有沒有什麼辦法可以在試圖打開文件之前先測試一個文件是否正在使用?如何檢查文件是否正在使用?
try
{
FileStream stream = new FileStream(fullPath, FileMode.Open, FileAccess.Read, FileShare.Read);
}
catch (IOException ex)
{
// ex.Message == "The process cannot access the file 'XYZ' because it is being used by another process."
}
我看着周圍的一切,我能找到的最好是執行某種:例如,如果該文件仍然被寫入或使用被認爲是這個代碼塊將拋出一個異常用一個試圖捕捉裏面的投票,那感覺所以哈克。我希望那裏有System.IO.FileInfo
,但沒有。
任何想法更好的方法?
我並不關心它是原子。該鏈接提到可以通過P/Invoke進行檢查。我在哪裏可以找到更多的信息,看看它是否有幫助? – mckamey 2009-08-22 02:43:51
@McKAMEY:檢查我剛添加的第二個鏈接。 – cakeforcerberus 2009-08-22 03:22:35
由於文件系統的改變總是可能的,所以正確的答案是嘗試它並處理髮生的異常。此外,簡單地詢問它比跳過箍環查明是否正在使用更容易。 – 2009-08-22 03:45:33