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

如何在Java中检查动态创建的文件?,java,file,Java,File,我有一个应用程序,我需要检查一个文件,该文件可能会在我的执行过程中动态创建,我会在一段最长时间后放弃,因为该文件尚未显示。我想知道Java中是否有一种更有效的方法来检查文件,而不是轮询文件,然后每X秒睡眠一次?如果不是,最有效的方法是什么 如果与轮询相同的程序正在创建文件,则可以使用Object.notify()让创建文件的逻辑通知程序的一部分。这里可以找到wait()和notify/notifyAll()机制的一般说明:您当前必须轮询您提到的文件系统。Java 7应该有,所以在某个时候这应该会

我有一个应用程序,我需要检查一个文件,该文件可能会在我的执行过程中动态创建,我会在一段最长时间后放弃,因为该文件尚未显示。我想知道Java中是否有一种更有效的方法来检查文件,而不是轮询文件,然后每X秒睡眠一次?如果不是,最有效的方法是什么

如果与轮询相同的程序正在创建文件,则可以使用Object.notify()让创建文件的逻辑通知程序的一部分。这里可以找到wait()和notify/notifyAll()机制的一般说明:

您当前必须轮询您提到的文件系统。Java 7应该有,所以在某个时候这应该会变得更容易。

您可以尝试轮询文件更改

如果您在Windows上运行,则可以收到目录更改通知,请参阅。当然,这不是跨平台的,需要使用或类似的本机网桥。事实上,JNA偏移器,例如class,FileMonitor类(在下载中)使用底层平台的文件更改通知


如果您看到的是一大堆文件或更少的文件,那么轮询当然不太可能是一个性能问题,它不是一个“感觉良好”的解决方案——但要保证非纯java解决方案的痛苦也不是那么糟糕。另一方面,监视包含数千个文件的目录将受益于操作系统的直接作用。

这似乎是个好主意,但不适用于我的情况,因为文件是从外部生成的。