使用JDK 7我已经成功地使用java.nio.file.StandardWatchEventKinds观察新文件创建,删除和修改的特定目录。*
我希望有人可能知道让Java检测新文件创建的方法,而不管它们的路径如何。
我想这样做,所以我可以为每个新写的文件计算MD5总和。
感谢您提供任何建议。
答案 0 :(得分:0)
一种可能性 - 不是方便的,而是一种可能性 - 是在目录树中查找要监视的目录,在WatchService中注册每个目录。这不是一个非常好的方法,它可能是一个问题,取决于实际目录树的大小。
答案 1 :(得分:0)
好的,简短的回答是我认为Java不能开箱即用。您必须拦截对操作系统的调用,这需要更接近裸机的操作,或者您可以按照another answer中的建议执行操作,并从根目录向每个文件夹注册侦听器,更不用说其他驱动器了在Windows机器的情况下。
第一种方法需要自定义JNI,它假定操作系统具有这样的钩子并允许用户代码访问。
第二种方法可行,但可能会消耗大量内存来跟踪所有侦听器。在Windows中右键单击c:\并选择并查看我们正在谈论的文件夹数量。
答案 2 :(得分:0)
我不知道StandardWatchEvents(虽然听起来很方便)。
您想要的一种方法是使用本机窗口API,例如ReadDirectoryChangesW(或音量更改)。这很痛苦,但是有效(曾经去过那里,希望我当时有另一种选择)。