Delphi:检查文件是否正在使用中

时间:2009-02-02 12:11:12

标签: delphi file handle

我想写/删除文件,但有时如果该文件被其他程序使用,我会崩溃。如何检查文件是否由其他进程打开,或者我可以打开它进行写入?

5 个答案:

答案 0 :(得分:30)

问题是,在您检查是否可以获得独占访问权限和打开文件之间,还有其他内容可以获得对文件的独占访问权限,并且无论如何都会获得异常。

唯一可以查看是否可以对文件进行独占锁定的简单方法是尝试获取文件的独占锁定,如果你得到它就可以了。

如果没有,则捕获异常,并且

  • 去做别的事情
  • 稍等片刻再试一次

生活中的一种情况是,请求宽恕比获得许可更好:)

答案 1 :(得分:4)

有一种新方法可以获取Vista及其中的文件锁定源: http://www.remkoweijnen.nl/blog/2011/01/03/cannot-access-files-but-need-the-origin/

用户模式: 写入锁定文件的最佳方法是要求用户在其他进程中关闭它。在批处理过程中,您应该忽略这样的文件并记录问题。提供其他进程的名称是为用户找到解决方案的一种非常好的方法。

答案 2 :(得分:0)

不确定您要检查哪种编程语言是否可以写入文件。在Java中,java.io.File.canWrite()可以为您完成工作。

一般:

在类UNIX操作系统中,您可以使用lsof命令。

答案 3 :(得分:0)

如果您想查看哪个程序包含文件句柄,请使用Process Monitor(从MicroSoft下载)。

此工具具有命令行界面,因此您可以使用语言的脚本界面(例如java.lang.Process)来运行该工具并显示有用的错误消息。

答案 4 :(得分:0)