如何在Java中检查动态创建的文件?

时间:2010-04-27 20:58:21

标签: java file

我有一个应用程序,我需要检查一个可以在执行期间动态创建的文件,我会在文件尚未显示的某个MAX时间后放弃。我想知道在Java中是否有更有效的方法来检查文件,而不是轮询它然后每隔X秒睡一次?如果不是最有效的方式呢?

3 个答案:

答案 0 :(得分:3)

您目前必须如上所述轮询文件系统。 Java 7应该有file system notifications,因此在某些时候这应该会变得更容易。

答案 1 :(得分:1)

如果同一程序正在创建文件作为轮询,则可以使用创建文件的逻辑使用Object.notify()通知程序的一部分。可以在此处找到wait()和notify / notifyAll()机制的一般说明:http://java.sun.com/docs/books/tutorial/essential/concurrency/guardmeth.html

答案 2 :(得分:0)

您可以尝试JPoller轮询文件更改。

如果您在Windows上运行,则可以获取目录更改通知,请参阅Obtaining Directory Change Notifications。当然,这不是跨平台的,需要使用JNA或类似的本地桥。事实上,JNA offsers如class,FileMonitor类(在下载中)使用底层平台的文件更改通知。

如果你正在观看一些或更少的文件,那么当然,轮询不太可能是一个性能问题,它不是一个“感觉良好”的解决方案 - 但是不能保证非纯粹的痛苦java解决方案。另一方面,监视包含数千个文件的目录将受益于操作系统的直接通知。