检测被锁定的文件

4

如何在Java 5中运行的Windows系统上,通过一个File实例的引用,检测其对应的文件是否被锁定,如果是,还能否通过编程方式获取持有该锁的进程信息?

谢谢, Don


1
请查看https://dev59.com/A3I_5IYBdhLWcg3wK_s6。 - svrist
1
这个线程有帮助吗?https://dev59.com/gHM_5IYBdhLWcg3waSX9 - bdhar
1
我正在使用Sysinternal的Procexp应用程序进行检测,该应用程序以使用低级别和未记录的Windows API而闻名,因此我从未指望可以在Java中实现。但如果有方法,那就太好了。 - calavera.info
@calavera 或许有一种方法可以将其包装在Java进程中。它是否具有命令行界面? - Sean Patrick Floyd
@seanizer 我认为没有命令行界面,此外,Christian的解决方案是使用本地操作系统功能的正确方法。 - calavera.info
如果你愿意编写C++代码,那就可以。但问题是关于Java的。 - Sean Patrick Floyd
1个回答

2

我认为这只能通过本地方式实现。您需要访问FileHandle信息。编写一个Dll并通过JNI将其连接到您的Java应用程序。使用SystemHandleInformation(16)调用NtQuerySystemInformation。您将获得一个包含所有打开句柄的列表,搜索FileHandles,将FileHandles与您自己的文件进行比较。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接