Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/328.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Java的操作系统事件处理程序_Java_Operating System - Fatal编程技术网

使用Java的操作系统事件处理程序

使用Java的操作系统事件处理程序,java,operating-system,Java,Operating System,我有一个java进程作为守护进程,它监视文件系统上的directroy,一旦一个新文件添加到目录中,java进程将通过对其执行一些逻辑来处理该文件,目前在我的实现中,守护进程每10秒检查一次文件夹,如果添加了新文件,它将开始处理该文件 有没有一种方法,文件夹会通知进程添加了新文件,然后进程就可以开始处理它,它本身就是java API操作系统级别的文件夹上的事件处理程序,我可以用java来做吗?我不知道有什么方法。无论如何,对于通知内容的文件夹,您可能必须更改(创建自己的)文件系统驱动程序 系统事

我有一个java进程作为守护进程,它监视文件系统上的directroy,一旦一个新文件添加到目录中,java进程将通过对其执行一些逻辑来处理该文件,目前在我的实现中,守护进程每10秒检查一次文件夹,如果添加了新文件,它将开始处理该文件


有没有一种方法,文件夹会通知进程添加了新文件,然后进程就可以开始处理它,它本身就是java API操作系统级别的文件夹上的事件处理程序,我可以用java来做吗?

我不知道有什么方法。无论如何,对于通知内容的文件夹,您可能必须更改(创建自己的)文件系统驱动程序

系统事件非常依赖于操作系统,而Java的设计正好相反


这取决于您希望守护进程的响应速度。使用sleep方法可以缩短睡眠时间,但会占用更多的CPU周期。

如果使用Java 7,请尝试阅读。
有一个WatchService类可以处理您想要的内容。

现在您可以使用现有的实用程序,如,但它是中的新功能之一


您应该设计代码,使notify机制与处理程序解耦,从而使您能够轻松升级。

我认为您将遇到的一个问题是并发访问同一文件。如果仍在写入,则无法以独占方式访问该文件。。而且还没有高伦蒂人知道这个文件有任何数据。您可能可以(ab)使用该事实来查看文件是否实际完成

尝试获取该文件的独占锁定,如果失败,则表示该文件未写入。一旦它有一个排他锁,那么这个文件很可能就完成了,你可以随心所欲地处理它

查看java.nio.channels.FileLock,看看这是否适合您。
()

非常感谢您的快速回复。+1提供有用的信息。在Java当前可用的所有文件监视程序实现中,都存在并发访问问题。