检测锁定的文件

问题描述:

鉴于对File实例的引用,是否可以(以编程方式)检测相应的文件是否被锁定,如果是,哪个进程持有锁?检测锁定的文件

我正在使用运行在Windows上的Java 5。

谢谢, 唐

+1

退房http://*.com/questions/1500174/checking-if-a-file-locked-in-java – svrist 2010-08-23 08:27:05

+1

此线程有帮助吗? http://*.com/questions/1390592/java-check-if-file-is-already-open – bdhar 2010-08-23 08:28:09

+1

我使用Sysinternal的Procexp应用程序进行这种检测,因使用低级别和未公开的Windows API而闻名,所以我永远不会期望它在Java中是可能的。但是,如果有办法,那会很好。 – 2010-08-23 08:36:11

,我认为这是唯一可能在本机的方式。您需要访问FileHandle信息。写一个DLL并通过JNI将它连接到你的Java应用程序。使用SystemHandleInformation(16)调用NtQuerySystemInformation。您可以获得所有打开的句柄的列表,搜索FileHandles,将FileHandles与您自己的文件进行比较。

+0

非常好。我认为这应该被接受的答案。 – 2010-08-24 05:59:54