当前位置:  开发笔记 > 编程语言 > 正文

文件在Java中更改了监听器

如何解决《文件在Java中更改了监听器》经验,为你挑选了5个好方法。

我希望在文件系统中更改文件时收到通知.我找到的只是一个调查lastModified File属性的线程,显然这个解决方案不是最优的.



1> Stephen Denn..:

我以前写了一个日志文件监视器,我发现轮询单个文件的属性(每秒几次)对系统性能的影响实际上非常小.

Java 7作为NIO.2的一部分添加了WatchService API

WatchService API专为需要通知文件更改事件的应用程序而设计.


我看到示例是看目录,但个别文件怎么样?

2> Telcontar..:

我使用Apache Commons的VFS API,这是一个如何监视文件而不会对性能产生太大影响的示例:

DefaultFileMonitor



3> André..:

有一个名为jnotify的lib 在linux 上包含inotify,并且还支持windows.从来没有使用它,我不知道它有多好,但值得一试,我会说.



4> Rutesh Makhi..:

在低级别,对此实用程序进行建模的唯一方法是在目录上进行线程轮询并密切关注文件的属性.但是您可以使用模式为这样的实用程序开发适配器.

例如,像Tomcat这样的j2ee应用程序服务器具有自动加载功能,只要部署描述符更改或servlet类更改,应用程序就会重新启动.

您可以使用来自此类服务器的库,因为tomcat的大多数代码都是可重用的和开源的.


这在Java 7中已不再适用:现在有一个API可以挂钩到操作系统的通知服务:http://blogs.oracle.com/thejavatutorials/entry/watching_a_directory_for_changes

5> Christian..:

Java commons-io有一个FileAlterationObserver.它与FileAlterationMonitor结合进行轮询.类似于公共VFS.优点是它具有更少的依赖性.

编辑:较少的依赖关系不是真的,它们对于VFS是可选的.但它使用java File而不是VFS抽象层.

推荐阅读
mobiledu2402851173
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有