通过Java实时检测新创建的文件

时间:2012-01-10 00:04:26

标签: java file creation

使用JDK 7我已经成功地使用java.nio.file.StandardWatchEventKinds观察新文件创建,删除和修改的特定目录。*

我希望有人可能知道让Java检测新文件创建的方法,而不管它们的路径如何。

我想这样做,所以我可以为每个新写的文件计算MD5总和。

感谢您提供任何建议。

3 个答案:

答案 0 :(得分:0)

一种可能性 - 不是方便的,而是一种可能性 - 是在目录树中查找要监视的目录,在WatchService中注册每个目录。这不是一个非常好的方法,它可能是一个问题,取决于实际目录树的大小。

答案 1 :(得分:0)

好的,简短的回答是我认为Java不能开箱即用。您必须拦截对操作系统的调用,这需要更接近裸机的操作,或者您可以按照another answer中的建议执行操作,并从根目录向每个文件夹注册侦听器,更不用说其他驱动器了在Windows机器的情况下。

第一种方法需要自定义JNI,它假定操作系统具有这样的钩子并允许用户代码访问。

第二种方法可行,但可能会消耗大量内存来跟踪所有侦听器。在Windows中右键单击c:\并选择并查看我们正在谈论的文件夹数量。

答案 2 :(得分:0)

我不知道StandardWatchEvents(虽然听起来很方便)。

您想要的一种方法是使用本机窗口API,例如ReadDirectoryChangesW(或音量更改)。这很痛苦,但是有效(曾经去过那里,希望我当时有另一种选择)。