2009-02-02 56 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)运行该工具并显示一条有用的错误消息。