一。春配置文件: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.xsd http://www.springframework.org/schema/tx http://www.springframework/ http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.1.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsd http://www.directwebremoting.org/schema/spring-dwr http://www.derectwww.derectweburmoting.org.dpringddcds. http://cxf.apache.org/jaxrs http://cxf.apache.org/schemas/jaxrs.xsd "> <! - 文件监测器-> <bean id =" Monitor "> <constructor-arg index =" 0 "value =" 10000 "/> <! ref = "observer"/> <! - 文件观察器 - > </bean> <! - 文件观察器 - > <bean id = "observer"> <constructor-arg index = "0" "value =" d:// uploaddir "/> <文件监听器 - > </bean> <! - 文件监听器 - > <bean id = "リスナー"/> <!
二。スプリング:SpringContextLoaderListener.class
javax.servlet.servletcontextevent; Import org.springframework.web.contextloaderlistener; public class springContextLoaderListenerは、contextRoaderListener {@OverRide public void contextInitialized(servletextextInitializized(event); Filemonitor scanner = getScanner(); //启动目录扫描器scanner.start(); } @Override public void contextdestroyed(servletcontextevent event){filemonitor scanner = getscanner(); //关闭目录扫描器scanner.stop(); super.contextdestroyed(event); } / ** *获取目录扫描器 * @return * / private filemonitor getScanner(){return 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-name> contextconfiglocation </param-name> <param-value> classpath:application.xml </context-param> <リッカー> <リスナークラス> com.web.springcontextloaderlistener </ristener-class> </ristener> </web-app>
四。 文件监测器
1。
Intort org.apache.commons.io.monitor.filealterationobserver;/** */ */public interface filemonitor {/** *注册观察器 * @param observer观察器 */void addobserver(filealtationobserver observer); / ** *删除观察器 * @param Observer观察器 */ void removeObserver(fileAlterationObserverオブザーバー); / ** *获取注册的所有观察器 * @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.apache.commons.lang3.concurrent.basicthreadfilfactory; filemonitor {private final filealterationmonitorモニター。 / ** *监测器线程名称 */ private static final string monitor_thread_name = "ファイルモニターデーモン"; / ** *监测器线程デーモン */ private static final boolean daemon = false; / ** * 定义监测时间间隔、文件观察器 * @paramインターバル监测时间间隔 * @paramオブザーバー文件观察者 */ filemonitorimpl(int interval、final filealterationobserver observer){this(interval、observer、new basicthreadfactory.builder()。namingpattern()。 } / ** * 定义监测时间间隔、文件观察器和线程工厂 * @paramインターバル监测时间间隔 * @paramオブザーバー文件观察器 * @Param Factory Monitor.setThreadFactory(Factory); } / ** *添加文件观察器 * @Param Observer * / @Override public void addobserver(fileAlterationObserver observer){monitor.addobserver(overserver); } / ** *删除文件观察器 * @param Observer * / @Override public void removserver(filealterationobserver observer){monitor.removeobserver(overserver); } / ** *获取注册的所有观察器 * @return * / @Override public Iterable <filealterationobserver> getobservers(){return Monitor.getobservers(); } / ** *启动监测器 * / @Override public void start(){try {monitor.start(); } catch(Exception e){e.printstacktrace(); }} / ** *停止监测器 * / @Override public void stop(){try {monitor.stop(); } catch(Exception e){e.printstacktrace(); }} / ** *获取监测时间间隔 * / @Override public long getInterval(){return Monitor.getInterval(); }}五
1。接口:FileObServer.Class
Import java.io.file; import org.apache.commons.io.monitor.filealterationlistener;/** *文件观察器角色 */public interface fileobserver {/** *添加监听器 * @paramリスナー */void addlistener(final filealterationlistenerリスナー); / ** *删除监听器 * @paramリスナー */ void removelistener(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;インポート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.commons.mon.filealemerterter;当有文件创建、删除、或变更动作时、则消息通知监听器 */public class fileobserverimpl extends filealterationobserver fileobserver {private static final long serialversionuid = -7239227289538993830l; / ** *文件过滤器 */プライベートファイナルファイルフィルターフィルター。 / ** *设置要监听观察的目录、并设置文件过滤器和监听器、用以观察指定具有指定扩展名的文件 * @param dir addListener(リスナー); this.filter = filter; file directory = new file(dir); //如果目录不存在if(!directory.exists()){try {fileutils.forcemkdir(directory); } catch(ioexception e){e.printstacktrace(); }} // fileutils.forcemkdir(ディレクトリ); } catch(ioexception e){e.printstacktrace(); }}} / ** * / @Override public void addListener(final fileAlterationListenerリスナー){super.addlistener(リスナー); } / ** *移除监听器 * / @Override public void removelistener(final fileAlterationListenerリスナー){super.removelistener(リスナー); } / ** *获取观察者对象的所有监听器 * / @Override public iterable <filealterationlistener> getListeners(){return super.getListeners(); } / ** *初始化文件观察者 * / @Override public void initialize()throws Exception {super.initialize(); } / ** *销毁文件观察者 * / @Override public void Destroy()throws Exception {super.destroy(); } / ** *获取所观察的目录 * / @OverrideパブリックファイルgetDirectory(){return super.getDirectory(); } / ** *获取文件过滤器 * @return * / public filefilter getFilter(){return filter; }}六。 文件监听器:filelistener.class
java.io.file; Import org.apache.commons.io.monitor.filealterationlisteneradaptor; Import org.apache.commons.io.monitor.filealterationobserver;/** *文件监听器 */パブリックファイナルクラスFilelistener拡張FilealterationListenerAdaptor {/** * onfilecreate(file file){//何かをする} / ** * 文件删除(转移)时执行的动作 * / @Override public void onfiledelete(ファイルファイル){//何かをするために} / ** *文件内容改变时执行的动作 * / @Override onfilechange(ファイルファイル){// {//何かをする} / ** *停止监听时执行的动作 * / @Override public void onstop(filealterationobserver observer){//何かをする}}}七。 文件过滤器
1。接口:filefilter.class
/** *文件过滤器角色、扩展自java.io.filefilter */public interface filefilter extends java.io.filefilter {/** *获取定义的扩展名 * * @return */string [] getextensions();}2。实现类:filefilterimpl.class
Import java.io.file; import org.apache.commons.io.filenameutils;/** *文件过滤器 */public class filefilterimpl explments filefilter {private string [] extensions; public filefilterimpl(string ... extensions){this.extensions = extensions; } / ** *是否接受该文件 * / @Override public boolean accept(file pathname){return filenameutils.isextension(pathname.getname()、extensions); } / ** *获取定义的扩展名 * @return * / @override public string [] getextensions(){return extensions; }}以上这篇java实现文件变化监控的方法(推荐)就是小编分享给大家的全部内容了、希望能给大家一个参考、也希望大家多多支持武林网。