我知道你可以檢查它是否是隻讀的,然後做一個try-catch語句來查看它是否可讀,但是是否有內置的方式來檢查文件是否已被使用?檢查文件是否可讀的標準方法?
2
A
回答
7
使用FileSystemInfo.Attributes
屬性,並對照FileAttributes.ReadOnly
:
var file = new FileInfo(path);
if ((file.Attributes & FileAttributes.ReadOnly) != 0)
{
// Do whatever you want for a read-only file
}
請注意,這不是的一樣的你是否能寫入文件。如果它已經被使用,那麼你可能無法寫信給它。即使它確實表示在您致電屬性時是否可以寫入該屬性,但它不會告訴您是否可以在之後立即寫入文件。
基本上,如果你想處理試圖寫入可能失敗的文件,你基本上用有來使用try/catch。我會專門捕捉IOException
(或者更具體的例外,可能),而不是捕捉所有例外。
2
打開文件時使用FileShare.None
。如果任何其他進程有該文件的句柄,則該調用將失敗。
例如爲:檢查文件是可寫的,而不是在使用:但是
bool isWritableAndFree = false;
try {
using (new FileStream(name, FileMode.Open, FileAccess.ReadWrite, FileShare.None))
{
isWritableAndFree = true;
}
} catch { }
return isWritableAndFree;
當心的是,這種類型的代碼很容易受到TOCTOU錯誤。在使用時趕上例外通常會更好。
相關問題
- 1. 是否可以檢查標準組件?
- 2. 檢查文件是否可讀爲BufferedImage
- 3. 的Javascript檢查文件是否可讀可寫或可執行
- 4. 是否有一個標準的方法來檢查與autoconf命名的可執行文件
- 5. 自動檢查Java文件是否符合編碼標準
- 6. 檢查文件路徑是否可讀可寫
- 7. 檢查標準輸入是否爲空
- 8. 是否可以讀取文本文件並進行檢查?
- 9. 是否有定義CSV文件內容的標準方法?
- 10. 在Jenkins中是否有測試腳本/可執行文件的標準方法?
- 11. 什麼是檢查文件是否改變的最快方法?
- 12. 如何檢查blobstore文件是否可讀
- 13. Linux系統:檢查是否文件描述符可以讀取
- 14. 檢查文件是否可以用Python讀取:try或if/else?
- 15. C,檢查文件是否存在而不能讀/寫可能?
- 16. 檢查文件/目錄條目是否可讀
- 17. 檢查用戶是否可以上傳文件的最佳方法是什麼?
- 18. 是否可以檢查EXCEL dmp文件?
- 19. 檢查本地文件是否可用
- 20. 什麼是不斷檢查SQL Server連接的標準方法?
- 21. 檢查numpy輸入尺寸的標準方法是什麼?
- 22. 檢查目錄是否可讀
- 23. 是否可以通過api將標準etherpad作爲文本文件讀取?
- 24. Owasp ASVS標準是否禁止使用非標準HTTP方法?
- 25. C++,檢查文件是否存在的最快方法?
- 26. 檢查文件是否在C中唯一的好方法
- 27. 推薦的方法來檢查文件是否壓縮/壓縮
- 28. 檢查啓動時文件是否存在的有效方法
- 29. Python ftplib:檢查文件是否已更改的最佳方法?
- 30. 是否有遠程備份文件更改檢測的標準?
Jon,在'FileAttributes.ReadOnly'中是否存在一些魔法,用於檢查文件是否正在使用,或者這只是檢查文件是否標記爲只讀? – Mitch
@Mitch:它只是*檢查它是否是隻讀文件。這與您目前是否可以寫信息不一樣。將編輯以清楚說明。 –