我想检查某个java.io.File是否由外部程序打开。在Windows上我用这个简单的一招:如何检查一个文件是否被另一个进程(Java/Linux)打开?
try {
FileOutputStream fos = new FileOutputStream(file);
// -> file was closed
} catch(IOException e) {
// -> file still open
}
我知道,基于UNIX的系统允许多个进程打开文件...是否有类似的伎俩,以实现基于UNIX的系统相同的结果?
任何帮助/帮闲高度赞赏:-)
你是绝对正确的......但我需要这个功能来监视文件状态(我使用Java 7中的WatchServices做的)。但我还需要检测特定文件何时再次关闭才能解锁,以便其他用户可以再次编辑它。 – salocinx 2012-02-18 16:58:13
你可以叫出'lsof'吗? – tchrist 2012-02-18 17:03:01
这是我将尝试做的下一件事。 lsof似乎存在于众多的linux发行版中。用lsof打开一个新的流程并读出标准输出将完成这项工作。我将在明天的主题中介绍我的解决方案。非常感谢! – salocinx 2012-02-19 23:13:39