读书人

分享一个资料监听器类:FileMonitor

发布时间: 2012-12-18 12:43:41 作者: rapoo

分享一个文件监听器类:FileMonitor

?? 一直使用tomcat开发,只要将<Context docBase="MyTest" path="/MyTest" reloadable="true" /></Host>中的reloadable属性设置成true.Tomcat就能自动监测到某个文件发生了改变,然后重新装载。由于对这个有点兴趣,所有也试着写了一个简单的实现,但对于文件夹下的多个文件监测,除了把每个文件都加入监测器中外,没有更好的思路和方法。大家可以讨论一下:

?

除件有我测试的整个eclipse工程文件,有兴趣的童鞋们可以看一下.

?

FileMonitor类的代码如下所示:

?

?

当web容器启动时,将要监听的文件加入到文件监听器类中,servet类如下所示:

?

<servlet><description></description><display-name>InitServlet</display-name><servlet-name>InitServlet</servlet-name><servlet-class>servlet.InitServlet</servlet-class><init-param><!-- the period of watching file --><param-name>period</param-name><!--  milliseconds --><param-value>1000</param-value></init-param><init-param><param-name>filename</param-name><param-value>D:/aa.txt</param-value></init-param><load-on-startup>0</load-on-startup></servlet>

?由于使用eclipse开发时,eclipse中的tomcat,将文件部署在了:D:\workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp3\wtpwebapps

下面,如我的这个工程中的jdbc.properties文件部署成了D:\workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp3\wtpwebapps\MyTest\WEB-INF\classes\jdbc.propertis,

此时使用此路径创建的File不存在,所以为了方便测试,我将要监听的文件路径作为InitServlet的一个初始化参数了。

?

除件是整个工程的文件,直接导入eclipse中即可使用。

1 楼 ryxxlong 2011-06-17 竟然没一个人有兴趣,真是杯具 2 楼 kimmking 2011-06-17 1\lastmodified不准
2\1000ms太长了
3\Timer太浪费了

还是等jdk支持操作系统级的fileWatch吧~(jdk7) 3 楼 ryxxlong 2011-06-17 kimmking 写道1\lastmodified不准
2\1000ms太长了
3\Timer太浪费了

还是等jdk支持操作系统级的fileWatch吧~(jdk7)



呵呵,我现在的水平只能想到这,谢谢你的建议 4 楼 gzfreeman 2011-06-19 好像apache的commons-io库就有可提供FileMonitor的功能阿 5 楼 甄子丹 2011-06-19 apache vfs可以监听文件变化 6 楼 ryxxlong 2011-06-19 gzfreeman 写道好像apache的commons-io库就有可提供FileMonitor的功能阿


谢谢,commons-io库确实有FileMonitor的功能

Commons IO is a library of utilities to assist with developing IO functionality.
There are six main areas included:
Utility classes - with static methods to perform common tasks
Input - useful Input Stream and Reader implementations
Output - useful Output Stream and Writer implementations
Filters - various implementations of file filters
Comparators - various implementations of java.util.Comparator for files
File Monitor - a component for monitoring file system events 7 楼 chenchuan 2011-06-20 好像java7里面已经加上了这个功能了 具体的没有用过 模糊的记得Java7新特性监听文件改变
http://blog.csdn.net/jastar/archive/2011/03/18/6259500.aspx 8 楼 cs624178950 2011-06-20 呵呵!还是不错,, 9 楼 liyun_1981 2011-06-21 支持楼主一个,觉得可在fileChanged方法里面加入自定义运行时类加载的逻辑,这样就比较有实用价值了。
PS:楼上几个都没说到点子上。。。 10 楼 qiuboboy 2011-06-21 你去找找有个java的开源实现,可以监控文件系统的。 11 楼 小勇12 2011-06-22 不晓得是否底层又是用JNI来完成的

读书人网 >编程

热点推荐