2009-02-02 21 views
7

我想寫入/刪除文件,但有時如果該文件正在被另一個程序使用,則會發生崩潰。如何檢查文件是否被其他進程打開,或者我可以打開文件進行寫入?德爾福:檢查文件是否在使用

+0

這將是信息列出你正在使用的操作系統和編程語言。 – Andy 2009-02-02 12:13:54

+0

+1 Andy。 Arthur,請在標籤或問題中提及編程語言或操作系統。 – Srikanth 2009-02-02 12:23:24

回答

29

問題是,在您檢查是否可以獲得獨佔訪問權限和打開文件之間,其他內容會獨佔訪問該文件,並且無論如何你都會得到異常。

如果你能得到一個文件的排他鎖,唯一的傻瓜證明方法是嘗試獲得文件上的排他鎖,如果你有它的話。

如果沒有,你捕獲異常,並且無論是

  • 去做些別的
  • 稍等片刻,然後再試一次

這是生活中的情況下,最好要問的一個寬恕超過許可:)

+1

+1,我希望更頻繁地投票。這整個「檢查某件事情,然後採取相應措施」似乎是舊DOS(或其他單一任務)日子的殘餘,或者只是程序員喜歡認爲他們的程序全部在計算機上... – mghie 2009-02-02 13:35:03

0

不確定您希望檢查哪種編程語言是否可寫入文件。在Java中,java.io.File.canWrite()可以爲你完成這項工作。

一般:

在類UNIX操作系統,你可以使用lsof命令。

0

如果您想查看哪個程序可以處理您的文件,請使用Process Monitor(從MicroSoft下載)。

此工具具有命令行界面,因此您可以使用您的語言的腳本界面(例如java.lang.Process)運行該工具並顯示一條有用的錯誤消息。