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

有帮助吗?

解决方案

问题是,在您检查是否可以获得独占访问权限和打开文件之间,其他东西获得了对该文件的独占访问权限,无论如何您都会收到异常。

查看是否可以获得文件上的独占锁的唯一万无一失的方法是尝试获得文件上的独占锁,如果获得了,那么您就拥有了它。

如果没有,您将捕获异常,并且

  • 去做点别的事吧
  • 稍等片刻,然后重试

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

其他提示

有一个新的方式来获得文件的来源锁定为Vista和在这里: HTTP:// WWW。 remkoweijnen.nl/blog/2011/01/03/cannot-access-files-but-need-the-origin/

用户模式: 写入锁定的文件,最好的办法是请用户关闭它在其他进程中。在批处理过程,你应该忽略这样一个文件和日志的问题。提供了另一个进程的名称是为用户找到一个解决一个非常好的方式。

不知道其中的编程语言,你想检查是否可以写入到文件中。在Java中, java.io .File.canWrite()能为你做的工作。

一般:

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

如果你想看到哪个程序持有手柄到您的文件,使用的进程监视器(来自Microsoft下载)。

此工具有一个命令行界面,所以可以使用语言的脚本接口(例如java.lang.Process)来运行工具和显示有用的错误消息。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top