我知道有幾十個關於「正被另一個進程使用的文件」的問題。但是他們都有嘗試讀取文件或寫入已被另一個進程使用的文件的問題。我只想檢查一個文件是否被另一個進程使用(之後沒有IO動作)。 我在別處找不到答案。 那麼,如何知道C#中的另一個進程是否正在使用某個文件或文件夾呢?如何知道另一個進程是否正在使用某個文件的文件夾?
回答
正如你在問題中所描述的,唯一的方法是先嚐試打開文件,看看它是否被另一個進程使用。
你可以用這個方法我較早前實施的想法是,如果該文件存在,那麼嘗試打開該文件作爲開寫,所以如果失敗則該文件可能是由另一個進程使用:
public static bool IsFileInUse(string fileFullPath, bool throwIfNotExists)
{
if (System.IO.File.Exists(fileFullPath))
{
try
{
//if this does not throw exception then the file is not use by another program
using (FileStream fileStream = File.OpenWrite(fileFullPath))
{
if (fileStream == null)
return true;
}
return false;
}
catch
{
return true;
}
}
else if (!throwIfNotExists)
{
return true;
}
else
{
throw new FileNotFoundException("Specified path is not exsists", fileFullPath);
}
}
這是一個好方法,謝謝。但最簡單的方式,幾乎每個人都首先想到它。我只是想看看是否有任何規範的方式來在.NET中做到這一點。但非常感謝你的幫助。 –
歡迎您:) –
好吧,當我查看其他線程時,似乎唯一的方法是嘗試在try catch塊中打開文件,並檢查異常類型以查看它是否被鎖定。 –
此信息可能幫助:
- 1. 如何知道某個文件當前是否正在執行?
- 2. 如何使用NSURL查看某個文件夾是否是另一個文件夾的子項?
- 3. 文件被另一個進程使用。如何知道哪個過程?
- 4. 如何知道某個進程是否正在運行?
- 5. 我可以知道一個文件是否是一個文件夾?
- 6. 文件夾刪除錯誤shutil.rmtree,另一個進程正在使用的文件
- 7. 如何讀取另一個進程正在使用的文件?
- 8. 如何強制刪除另一個進程正在使用的文件夾?
- 9. 使用C#,如何知道一個文件夾是否位於網絡
- 10. 文件在C#中 - 「文件是由另一個進程使用」
- 11. 如何知道某個視頻文件(.mp4)是否忙?
- 12. 使用File.AppendAllText()後另一個進程正在使用的文件
- 13. 如何知道應用程序是否正在創建文件夾?
- 14. 如何使用PHP在另一個文件夾內創建多個文件夾?
- 15. 解析一個xml文件,知道它的文件夾在
- 16. 如何知道另一個進程何時停止在Perl中寫入文件?
- 17. 文件正在被另一個進程使用 - 使用FileInfo
- 18. 將文件從一個文件夾移動到另一個文件正在被另一個進程使用的C#錯誤文件
- 19. 如何知道一個.apk文件是否可以在android
- 20. 節點js檢查文件是否正在被另一個進程使用
- 21. 如何清除另一個進程正在使用的文本文件
- 22. 如何在一個文件夾和進口在運行的Python程序並且從另一個文件夾
- 23. 如何進行RadTreeView知道項目節點是一個投擲的文件夾
- 24. IOException:另一個進程正在使用的文件
- 25. 另一個進程正在使用的文件
- 26. 正在被另一個進程使用的vb.net文件
- 27. 從另一個進程正在使用的文件中讀取
- 28. C#File.Delete,另一個進程正在使用的文件
- 29. 複製另一個進程正在使用的文件
- 30. 打開另一個進程正在使用的文件
的可能的複製[?如何檢查文件鎖定(http://stackoverflow.com/questions/1304/how-to-check-for-file-鎖) –