如何在Java中检测打开文件

5

我想编写一个Java应用程序。它在后台运行,当用户尝试在某个文件夹中打开文件或目录(双击或右键单击并选择“打开”)时,将生成一个事件,我可以在事件处理程序中执行某些操作。在Java中是否可能检测到这一点?顺便说一下,似乎java.nio包无法检测到这一点。


这仅获取文件和目录的更改。 - Peter Lawrey
我现在会删除注释。 - jmj
请注意,双击只会对文件执行操作系统动作(某些定义的命令)。根据文件扩展名和配置,操作系统将使用文件名作为参数执行命令。没有更多了解。或者你正在尝试做的事情更多地涉及具体的操作系统文件浏览器,或者它与其他特殊性质更相关(例如锁定文件)。 - helios
那么在Java中不太可能检测到双击,对吧? - bluestar
2个回答

3
你可以轮询所有文件来查看它们是否在Windows中被锁定。
无法判断文件是由直接用户打开还是被其他程序(例如Word搜索)简单扫描。
我怀疑你试图做的事情可以用更好或更可靠的方式完成。

+1 表示“我怀疑你试图做的事情可以用更好或更可靠的方式完成”。 - helios
虽然他可能想要在任何文件被打开时进行捕捉,但在现代计算机设置中观察所有文件而不具备巨大的检测延迟(大量的文件...)是不太可能的。 - brimborium
实际上,我并不想知道文件是否已打开。我只想获取打开事件。我的情况是这样的,例如有一个空文件,当用户双击它时,将生成一个事件,在事件处理程序中,程序将从服务器下载文件内容并为用户打开它。 - bluestar
我怀疑你尝试做的事情不被操作系统支持。你能做的最接近的方法是创建一个自定义文件系统驱动器(例如Dropbox的驱动器字母)。这是非常底层的操作(不是Java可以做到的),但会给你这个“事件”。 - Peter Lawrey

0

监视目录更改。请查看this


这里没有关于文件打开的事件。 - Keppil
我明白了,能否请您解释一下这样做如何帮助实现 OP 的目标? - Keppil
当用户打开文件时,我认为没有任何更改。 - bluestar

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