一. Весна :
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://wwww.springframe.orschema. xmlns: dwr = "http://www.directwebremoting.org/schema/spring-dwr" xmlns: jaxrs = "http://cxf.apache.org/jaxrs" xsi: schemalocation = "http://wwww.sprameframe. 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.xs"> id = "monitor" class = "com.interfaces.file.monitor.filemonitorimpl"> <constructor-arg index = "0" value = "10000" /> <!-监测时间间隔 , 单位 : 毫秒-> <Конструктор-arg index = "1" ref = "asber" /> <!-文件观察器-> < /bean> <! id = "stemver" class = "com.interfaces.file.monitor.fileobserverimpl"> <constructor-arg index = "0" value = "d: // uploaddir"/> <!-观察的目录-> <constructor-arg index = "1" ref = "filter"/> <!-文件过滤器-> <constructor-Arg = "/"/> "!文件监听器-> </bean> <!-文件监听器-> <bean id = "слушатель" class = "com.interfaces.file.monitor.filelistener"/> <!-文件过滤器-> <bean id = "filter" class = "com.interfaces.file.monitor.filefilterimpl"> <! -> <Constructor-Arg index = "0" value = "xml"/> </bean> </beans>
二. Весна :
SpringContextLoaderListener.Class
Импорт javax.servlet.servletContexTextent; Import org.springframework.web.context.contextloaderListener; Public Class SpringContextLoadlister Extends ContextLoaderListener {@OverridePublic void ContextInitialized (EventContexTextevent Event) {SuperTextIalial (Event); EventCanner =;启动目录扫描器 Scanner.Start ();} @overridePublic void contextDestroyed (EventContexTexTevent Event) {filemonitor scanner = getsCanner (); // 关闭目录扫描器 scanner.stop (); super.contextDestroyed (event);}/*** 获取目录扫描器 @return*/private filemonitor getScanner () {return); GetCurrentWebApplicationContext (). GetBean (filemonitor.class);}}三. Веб 工程配置文件 :
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/javaee "//xmlns.jcp.org/xml/ns/javaee "//xmlns.jcp.org/xml/ns/javaee 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 " версия = "2.4"> <Stext-Param> <param-name> contextConfiglocation </param-name> <value> classPath: Application.xml </param-value> </context-param> <dellocker> <lidseer-class> com.web.springcontextloadlisterse </slirlerer> </sluster> </web-app>
四. 文件监测器
1. 接口 : Filemonitor.class
import org.apache.commons.io.monitor.FileAlterationObserver;/*** 文件监测器角色*/public interface FileMonitor {/*** 注册观察器* @param observer 观察器*/void addObserver(FileAlterationObserver observer);/*** 删除观察器* @param observer 观察器*/void removeObserver(FileAlterationObserver observer); /*** 获取注册的所有观察器*@return 观察器集合*/iteerable <fileartationObserver> getObservers (); /*** 启动监测器*/void start (); /*** 停止监测器*/void stop (); /*** 获取监测间隔时间*@return 间隔时间 (: : 毫秒)*/long getInterval (); } 2. 实现类 : FileMonitorImpl.class
Import java.util.concurrent.threadfactory; import org.apache.commons.io.monitor.filealterationmonitor; импорт org.apache.commons.io.monitor.filealterationobserver; импорт org.apache.commons.lang3.concurrent.basicthreadfactory;/*** 监测器 监测时间间隔 设置文件观察器 设置文件观察器 设置文件观察器 设置文件观察器 设置文件观察器 设置文件观察器 设置文件观察器 设置文件观察器 设置文件观察器 设置文件观察器 设置文件观察器 设置文件观察器 设置文件观察器 设置文件观察器 设置文件观察器 设置文件观察器 设置文件观察器 设置文件观察器 设置文件观察器 设置文件观察器 设置文件观察器 设置文件观察器 设置文件观察器. Filemonitor {private final filalterationmonitor monitor;/*** 监测器线程名称*/private static final String monitor_thread_name = "Daemon Monitor File";/*** 监测器线程 Daemon 标记*/Private Static Final Boolean Daemon = false;/*** 定义监测时间间隔、文件观察器*@param Interval 监测时间间隔*@param sticver 文件观察者*/filemonitrimplimpl (int advalt obstratebret abservest abservest abserver {this (интервал, наблюдатель, new BasicThreadFactory.builder (). NamingPattern (monitor_thread_name) .daemon (daemon) .build ()); } /*** 定义监测时间间隔、文件观察器和线程工厂* @param Интервал 监测时间间隔* @param stemver 文件观察器* @param factory 线程工厂* /filemonitorimpl (int -интервал, окончательный файловый наблюдатель, наблюдатель, Final Fluefactory Factory) {this.Monitor = newalterationmonitor (интервал, новая FileLaterationObserver [] {assorver}); }/*** 添加文件观察器*@param vearver*/ @overridepublic void addobserver (stirealtatorationobserver stember) {monitor.addobserver (stemver);}/*** 删除文件观察器*@param stemver*/ @overridepublic void remoadobserver (Firealtationobserver abserver) examerver). {monitor.removeobserver (viserver);}/*** 获取注册的所有观察器*@return*/@overridepublic iteerable <flielgationObserver> getObservers () {return Monitor.getObservers ();}/*** 启动监测器*/@overpublic void start () {try {monitor.start (); {e.printStackTrace ();}}/*** 停止监测器*/@overridePublic void stop () {try {monitor.stop ();} catch (Exception e) {e.printstacktrace ();}}/*** 获取监测时间间隔*/@overpublic long getInterval () {return Monitore.getInterval (); }}五. 文件观察器
1. 接口 : FileObserver.class
Импорт java.io.file; import org.apache.commons.io.monitor.filealterationlistener;/*** 文件观察器角色*/public interface fileobserver {/*** 添加监听器*@param слушатель*/void addlistener (finallealterationslister levener);/*** 删除监听器*@param alliveler*/void removelistener (finallators leviretator);/*** 删除监听器 @param*/void lementistener (finallators leviretator); @return*/iterable <fileartationListener> getListeners (); /*** 初始化观察器*@Throws Exception*/void инициализация () бросает исключение; /*** 销毁观察器*@Throhs Exception*/void Destress () бросает исключение; /*** 获取观察的目录* @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; импорт org.apache.commons.io.monitor.filealteratorationlistener;当有文件创建、删除、或变更动作时 , 则消息通知监听器*/plailObserVerimpl Extends Extends Extends FliealterationObserver реализует FileObserver {Private Static Final Long SerialVersionUID = -723922728953893830L;/*** 文件过滤器/Private Final FileFilter Filter;/*** 设置要监听观察的目录 并设置文件过滤器和监听器 并设置文件过滤器和监听器 用以观察指定具有指定扩展名的文件 @param dir dir dir dir @param @param @param @param @param @param @param @@param @@param @@param @param @@param @@param @@param dir dir dir dir. Слушатель 文件监听器*/public fileObSerVerimpl (String Dir, Final FileFilter Filter, FilealterationListener Hellocer) {Super (dir, Filter, (iocase) null); AddListener (слушатель); this.filter = filter; файл Directory = new File (dir); // 如果目录不存在 if (! Directory.exists ()) {try {fileUtils.forcemkdir (directory);} catch (ioexception e) {e.printstacktrace ();}} // 如果存在的是文件 ree (directory.exists () &&wime.isfile ()} // 如果存在的是文件 ree (exatory.exists () & {FileUtils.forceletete (Directory); FileUtils.forcemkdir (Directory);} catch (ioException e) {e.printstacktrace ();}}}/*** 添加监听器*/@overpublic void AddListener (final fileltationLister stirliger) {superdlister (слушатель); removeListener (Final FilealterationLister Listener) {super.Removelistener (слушатель);}/*** 获取观察者对象的所有监听器*/@overridepublic iterable <filealtationListener> getListeners () {return super.getListeners ();}/*** 初始化文件观察者*/@overridepublic vidize vidize () throws execectize {supertifitial*销毁文件观察者*/@overridePublic void destress () throws exception {super.destroy ();}/*** 获取所观察的目录*/@overidepublic file getDirectory () {return super.getDirectory ();}/*** 获取文件过滤器*@return*/public filefilter getFilter () {return Filter;}}}}}}@@return*/public filefilter () {return;六. 文件监听器 :
FileListener.Class
Импорт java.io.file; import org.apache.commons.io.monitor.filealterationlistereneradaptor; import org.apache.commons.io.monitor.filealterationobserver;/*** 文件监听器*/public Final Class fileListener Extenders voidecreectrateRector {/*** 文件创建时执行的动作/@worplic opilecreectr Чтобы что -то сделать}/*** 文件删除 (转移) 时执行的动作*/@overridepublic void onfilledelete (файл файла) {// Чтобы что -то сделать}/*** 文件内容改变时执行的动作*/@overridepublic void onfilechange (файл) {// сделать что -нибудь}/*** x/@overpublic void (fileartatortterator aboid -obstratator aboid -void что -то}/*** 停止监听时执行的动作*/@overridepublic void onstop (fileartationobserver stemver) {// Чтобы что -то сделать}}七. 文件过滤器
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 реализует filefilter {private String [] extensions; public filefilterimp Filenameutils.isextension (pathname.getName (), extensions); }/*** 获取定义的扩展名*@return*/ @overridepublic string [] getextensions () {return extensions;}}以上所述是小编给大家介绍的 java 实现文件变化监控 希望对大家有所帮助 , 如果大家有任何疑问请给我留言 , 小编会及时回复大家的。在此也非常感谢大家对武林网网站的支持!