一。春配置文件:
application.xml
<?xml version = "1.0" encoding = "utf-8"?> <beans xmlns = "http://www.springframework.org/schema/beans" xmlns:xsi = "http://www.w3.org/2001/xmlschema-instance" xmlns:tx = "http://www.springframework.org/schema/tx" xmlns:aop = "http://www.springframework.org/schema/aop" xmlns:context = "http://www.springfrywork xmlns:dwr = "http://www.directwebremoting.org/schema/spring-dwr" xmlns:jaxrs = "http://cxf.apache.org/jaxrs" xsi:schemalocation = " http://www.springframework.org/schema/beans/spring-beans-3.1.xsdhttp://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.1.xsdhttp://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.1.xsdhttp://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsdhttp://www.directwebremoting.org/schema/spring-dwr http://www.directwebremoting.org/schema/spring-dwr-3.0.xsdhttp://cxf.apache.org/jaxrs http://cxf.apache.org/schemas/jaxrs.xsd"> id = "Monitor" class = "com.interfaces.file.monitor.filemonitorimpl"> <constructor-arg index = "0" value = "10000" /> <! id = "Observer" class = "com.interfaces.file.monitor.fileobserverimpl"> <constructor-arg index = "0" "value =" d:// uploaddir "/> <! - > <constructor-arg index =" 1 "ref ="フィルター "/>> <! - > </bean> <! - 文件监听器 - > <bean id = "リスナー" class = "com.interfaces.file.monitor.filelistener"/> <! - > <constructor-arg index = "0" value = "xml"/> </bean> </bean>
二。春上下文加载监听器:
SpringContextLoaderListener.class
javax.servlet.servletcontextevent; Import org.springframework.web.contextloaderlistener; public class springcontextloaderlistenerは、contextloaderlistenerを拡張します。 GetScanner(// getCurrentWebApplicationContext()。getBean(filemonitor.class);}}}
三。 Web工程配置文件:
web.xml
<?xml version = "1.0" encoding = "utf-8"?> <web-app xmlns:xsi = "http://www.w3.org/2001/xmlschema-instance" xmlns:web = "http://xmlns.jcp.org/xml/ns/ns/ns/ns/ns/ns/ns/ns/ns/ns/ns/- xsi:schemalocation = "http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_4.xsd http://xmlns.jcp.org/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd " version = "2.4"> <context-param> <param-name> contextconfiglocation </param-name> <param-value> classpath:application.xml </param-value> </context-param> <リスナー> <リスナー> <リスナー> <リスナー> <リスナー> <リスナー> <リスナー> <リスナー> <リスナー>
四。 文件监测器
1。
org.apache.commons.io.monitor.filealterationobserver;/***文件监测器角色*/public interface filemonitor {/***注册观察器*@param Observer addobserver(fileAlterationObserver observer);/***删除观察器*@param observer(filemerterverter) /***获取注册的所有观察器*@return观察器集合*/iterable <filealterationobserver> getobservers(); /***启动监测器*/void start(); /***停止监测器*/void stop(); /***获取监测间隔时间*@return 间隔时间(单位:毫秒)*/long getInterval(); } 2。实现类:Filemonitorimpl.class
java.util.concurrent.threadfactory; import org.apache.commons.io.monitor.filealterationmonitor; Import org.apache.commons.mon.mon.filealterationobserver; Import org.apach.commons.lang3.concurrent.basicthreadFilmentory; filemonitor {private final filealterationmonitor Monitor;/***监测器线程名称*/private static final string monitor_thread_name = "file monitor daemon";/***监测器线程daemon标记*/private static final boolean daemon = false;/*** 定义监测时间间隔、文件观察器*@param interval监测时间间隔*@param observer {this(interval、observer、new BasicThreadFactory.builder()。namingpattern(monitor_thread_name).daemon(daemon).build()); } /*** 定义监测时间间隔、文件观察器和线程工厂* @paramインターバル监测时间间隔* @paramオブザーバー文件观察器* @param Factory }/***添加文件观察器*@param Observer*/ @OverridePublic void addobserver(fileAlterationObserver Observer){monitor.addobserver(Observer);}/***删除文件观察器*@Param Observer*/ @ @OverridePublic void Removabserver(FileAlterationBserververververver) {monitor.removeobserver(observer);}/***获取注册的所有观察器*@return*/@overridepublic iterable <filealterationobserver> getobservers(){return monitor.getobservers();}/***启动监测器*/@@@overridepublic void( {e.printstacktrace();}}/***停止监测器*/@overridepublic void stop(){try {monitor.stop();} catch(experntstacktrace();}/***获取监测时间间隔*/@@overridepublic getinterval(){retunter.terintertinterval(); }}五。 文件观察器
1。接口:FileObServer.Class
Import java.io.file; import org.apache.commons.io.monitor.filealterationlistener;/***文件观察器角色*/public interface fileobserver {/***添加监听器*@paramリスナー*/void addlistener(final filealterationlistenerリスナー);リスナー);/***获取注册的监听器* @return*/iterable <filealterationlistener> getListeners(); /***初始化观察器*@Throws例外*/void initialize()スロー例外。 /***销毁观察器*@Throws例外*/void Destroy()スロー例外。 /***获取观察的目录* @return*/file getDirectory();/***获取文件过滤器** @return*/public filefilter getFilter();} 2。实现类:FileObServerimpl.Class
java.io.file; Import java.io.ioexception; Import org.apache.commons.io.fileutils; Import org.apache.commons.io.iocase; Import org.apache.commons.io.monitor.filealterationlistener; Import org.apache.apache.commons.io.mon.mon.mon.mon.mon.mon.mon.mon.mon.当有文件创建、删除、或变更动作时、则消息通知监听器*/public class fileobserverimpl extends filealterationobserver fileobserver {private static final long serialversionuid = -723922728953893830l;/***文件过滤器*/プライベートファイナルフィルターフィルター;文件监听器*/public fileObserverimpl(String dir、final filefilterフィルター、filealterationListenerリスナー){super(dir、filter、(iocase)null); addListener(リスナー); this.filter = filter; file directory = new file(dir); // {fileutils.forcedelete(directory); fileutils.forcemkdir(directory);} catch(ioexception e){e.printstacktrace();}/***添加监听器*/@overridepublic void addlistener(final filealterationlistenerer){super.addlistener(} adddlistener(final filealterationlistenerer);移除监听器*/@overridepublic void removelistener(final filealterationListenerリスナー){super.removelistener(リスナー);}/***获取观察者对象的所有监听器*/@overridepublic iterable <filealterationlistener> getListeners(){super.getlisteners();例外{super.initialize();}/***销毁文件观察者*/@overridepublic void destroy()throws exception {super.destroy();}/***获取所观察的目录*/@overridepublic file getDirectory(){return super.getDirectory();}/*** return*@public filefter()六。 文件监听器:
filelistener.class
java.io.fileをインポート; Import org.apache.commons.io.monitor.filealterationlisteneradaptor; Import org.apache.commons.io.monitor.filealterationobserver; onfilecreate(file file){//何かをする}/*** 文件删除(转移)时执行的动作*/@overridepublic void onfiledelete(file file){//何かをする}/***文件内容改变时执行的动作*/@overridepublic onfilechange(file file){// observer){//何かをする}/***停止监听时执行的动作*/@overridepublic void onstop(filealterationobserver observer){//何かをする}}}七。 文件过滤器
1。接口:filefilter.class
/***文件过滤器角色、扩展自java.io.filefilter*/public interface filefilter extends java.io.filefilter {/***获取定义的扩展名** @return*/string [] getextensions();}2。
filefilterimpl.class
java.io.fileをインポート; Import org.apache.commons.io.filenameutils;/***文件过滤器*/public class filefilterimpl explments filefilter {private string [] extensions; public filefilterimpl(public filefilterimpl(public filefilterimpl(string ... extensions){this.extensions = extensions;} filenameutils.isextension(pathname.getname()、extensions); }/***获取定义的扩展名*@return*/ @overridepublic string [] getextensions(){return extensions;}}以上所述是小编给大家介绍的java实现文件变化监控、希望对大家有所帮助、如果大家有任何疑问请给我留言、小编会及时回复大家的。在此也非常感谢大家对武林网网站的支持!