繁体   English   中英

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

[英]How to check for a dynamically created file in Java?

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

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

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

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

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

如果您正在观看一些或更少的文件,那么当然,轮询不太可能是一个性能问题,它只是一个“感觉不错”的解决方案 - 但不能太过于保证非纯Java解决方案的痛苦。 另一方面,监视包含数千个文件的目录将受益于来自OS的直接noficiation。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM