簡體   English   中英

Delphi:檢查文件是否正在使用

[英]Delphi: Check whether file is in use

我想寫入/刪除文件,但是如果另一個程序正在使用該文件,有時會崩潰。 如何檢查文件是否已被另一個進程打開或可以打開以進行寫入?

問題是,在您檢查是否可以獲取獨占訪問權和打開文件之間,還有其他東西獲得了對該文件的獨占訪問權,無論如何您都獲得了異常。

看看是否可以在文件上獲得排他鎖的唯一可靠方法是嘗試在文件上獲得排他鎖(如果擁有)。

如果不是,則捕獲異常,或者

  • 去做別的事情
  • 請稍等,然后重試

這是生活中的一種情況,最好是請求寬恕比允許:)

有一種新的方法可以獲取Vista和更高版本的文件鎖定來源: http//www.remkoweijnen.nl/blog/2011/01/03/cannot-access-files-but-need-the-origin/

UserMode:寫入鎖定文件的最佳方法是要求用戶在其他過程中將其關閉。 在批處理過程中,您應忽略此類文件並記錄問題。 提供其他進程的名稱是為用戶找到解決方案的一種很好的方法。

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

一般:

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

如果要查看哪個程序保存了文件的句柄,請使用過程監視器 (從MicroSoft下載)。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM