一. Spring 配置文件 :
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.springframeworkwork.org/schema" xmlns: dwr = "http://www.directwebremoting.org/schema/spring-dwr" xmlns: jaxrs = "http://cxf.apache.org/jaxrs" xsi: schemalation = "http://www.springframework.org/bema/bans 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"><!-- 文件监测器 -> <Bean id = "Monitor" class = "com.interfaces.file.monitor.filemonitorimpl"> <constructor-arg index = "0" value = "10000" /> <! - 监测时间间隔 , 单位 : 毫秒 -> <constructor-arg index = "1" ref = "Observer" /> <! - 文件观察器 -> </Eple> <! - 文件观察器 -> <> <ean id = "Observer" class = "com.interfaces.file.monitor.fileObserverImpl"> <constructor-arg index = "0" value = "d: // uploaddir" /> <! - 观察的目录 -> <constructor-arg index = "1" Ref = "filter" /> <! - 文件过滤器 -> <construstor-arg index = "2" ref = "écouteur" --></bean><!-- 文件监听器 --> <bean id="listener"class="com.interfaces.file.monitor.FileListener"/><!-- 文件过滤器 --> <bean id="filter"class="com.interfaces.file.monitor.FileFilterImpl"> <!-- 指定文件扩展名,只有指定的扩展名文件会被处理。不同的扩展名间以 "," 间隔,如:xml,txt,bak -> <Constructor-Arg index = "0" value = "xml" /> </ank> </bans>
二. Spring 上下文加载监听器 :
SpringContextLoaderListener.class
Importer javax.servlet.servletContextevent; import org.springframework.web.context.contextloderListener; classe publique SpringContexToDerListener étend ContextLoaderListener)启动目录扫描器 Scanner.Start ();} @ OverRidePublic void contextDestRoyed (ServletContexTevent Event) {FileMonitor Scanner = GetSCanner (); // 关闭目录扫描器 Scanner.Stop (); super.ContextDestRoyed (événement);} / *** 获取目录扫描器 * @ return * / private Filemonitor getScanner () {return Get 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/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/nsd http://xmlns.jcp.org/xml/ns/javaeeeeeeeee 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> <ouciner> <ouciner-class> com.web.springContex
四. 文件监测器
1. 接口 : Filemonitor.Class
import org.apache.commons.io.monitor.filealterationobserver; / *** 文件监测器角色 * / interface publique Filemonitor {/ *** 注册观察器 * @param Observer 观察器 * / void addoBserver (FilealTerationObserver Observer); / *** 删除观察器 * @param Observer 观察器 * / VOID / *** 获取注册的所有观察器 * @return 观察器集合 * / itéable <filealterationobserver> getObservers (); / *** 启动监测器 * / void start (); / *** 停止监测器 * / void stop (); / *** 获取监测间隔时间 * @return 间隔时间 (单位 : 毫秒)) * / long getInterval (); } 2. 实现类 : FileMonitorImpl.class
import java.util.concurrent.threadfactory; import org.apache.commons.io.monitor.filealterationmonitor; import org.apache.commons.io.monitor.concurrent.basicTreadfactory; / *** 监测器 , 监测时间间隔 , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , FileMonitorImpl implémente 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 文件观察者 * / FilEmonitrimIMPLA Observer) {this (Interval, Observer, New BasicThreadFactory.Builder (). NamingPattern (monitor_thread_name) .daemon (daemon) .build ()); } / *** 定义监测时间间隔、文件观察器和线程工厂 * @Param Interval 监测时间间隔 * @param Observer 文件观察器 * @param usine 线程工厂 * / filemonitorimpl (int interval, filealteration finalObserver Observer, Final ThreadFactory Factory) {this.monitor = New FilealterationMonitor (interval, nouveau filealterationobserver [] {Observer}); monitorSheadfact (factory); } / *** 添加文件观察器 * @Param Observer * / @ OverRidepublic void addObserver (filealterationObserver Observer) {monitor.addoBserver (Observer);} / *** 删除文件观察器 * @param Observer * / @ overdepublic void retireobserver (FilealterationObserver Observer) {monitor.reMoveObserver (Observer);} / *** 获取注册的所有观察器 * @return * / @ OverRidePublic ITable <FilealterationObserver> getObservers () {return Monitor gens }}五. 文件观察器
1. 接口 : FileObserver.class
Importer java.io.file; import org.apache.commons.io.monitor.filealterationListener; / *** 文件观察器角色 * / interface publique FileObserver {/ *** 添加监听器 * @param écouteur * / void addListener (final filealterationListener auditeur); / *** 删除监听器 * @param écouteur * / void removeListener (Final FrealterationLester)获取注册的监听器 * @ return * / iteable <filealterationListener> getListeners (); / *** 初始化观察器 * @throws exception * / void initialize () lève l'exception; / *** 销毁观察器 * @Throws Exception * / void destrement () lève l'exception; / *** 获取观察的目录 * @ return * / file getDirectory (); / *** 获取文件过滤器 * * @ return * / public fileFilter getFilter ();} 2. 实现类 : FileObserverImpl.class
import 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.commons.io.monitor当有文件创建、删除、或变更动作时 , 则消息通知监听器 * / classe publique FileObserverImpl étend FilealterationObserver implémente FileObserver {private static final long SerialVersionUID = -7239227289538993830L; / *** 文件过滤器 * / / private final fileter Filter; / *** 设置要监听观察的目录 并设置文件过滤器和监听器 并设置文件过滤器和监听器 并设置文件过滤器和监听器 , , 用以观察指定具有指定扩展名的文件 * * @Param Dir 观察监听的目录 * 文件过滤器 * * 文件过滤器 文件过滤器 , 并设置文件过滤器和监听器 并设置文件过滤器和监听器 , , 用以观察指定具有指定扩展名的文件 * écouteur 文件监听器 * / public fileObserverImpl (String dir, filefilter final filter, filealterationListener écouteur) {super (dir, filter, (iocase) null); addListener (écouteur); this.filter = filter; file Directory = new File (dir); // 如果目录不存在 if (! Directory.exists ()) {try {fileutils.forcemkdir (répertoire);} catch (ioException e) {e.printstackTrace ();}} // 如果存在的是文件 else if (Directory.exists () && répertoire.fil {FileUtils.forcedelelete (répertoire); fileutils.forcemkdir (répertoire);} catch (ioException e) {e.printStackTrace ();}}} / *** 添加监听器 * / @ overRidepublic void addListener (Final FilealEtorationListener) RemoveListener (Final FilealterationListener Écouteur) {Super.RemoveListener (auditeur);} / *** 获取观察者对象的所有监听器 * / @ OverRidepublic iTable <FilealterationListener> getListeners () {return super.getListeners ();} / *** 初始化文件观察者 * / @ overdepublic initialize () throws exception {super.initialize ();}销毁文件观察者 * / @ OverRidePublic void destrement () lève une exception {super.destroy ();} / *** 获取所观察的目录 * / @ overRidePublic File getDirectory () {return super.getDirectory ();} / *** 获取文件过滤器 * @ return * / public fileFilter getFilter () {return filter;}}六. :
FileListener.class
Importer java.io.file; import org.apache.commons.io.monitor.filealterationListederadaptor; import org.apache.commons.io.monitor.filealterationobserver; / *** 文件监听器 * / public class fileListener étend FilealterationListeRaDaptor {/ *** 文件创建时执行的动作 * / @ @ @ overditeblic Void onfille {// Pour faire quelque chose} / *** 文件删除 (转移 转移) 时执行的动作 * / @ OverRidepublic void OnFileDelete (fichier de fichier) {// Pour faire quelque chose} / *** 文件内容改变时执行的动作 * / @ OverRidepublic void OnFileChange (fichier de fichier) {// pour faire quelque chose} / *** 开始执行监听时执行的动作 * / @ overdepublic ovoid on onStart (filialterationobs Pour faire quelque chose} / *** 停止监听时执行的动作 * / @ OverRidepublic void onstop (FilealterationObserver Observer) {// faire quelque chose}}七. 文件过滤器
1. 接口 : FileFilter.class
/ *** 文件过滤器角色 , 扩展自 java.io.fileFilter * / interface publique FileFilter étend java.io.fileFilter {/ *** 获取定义的扩展名 * * @ return * / String [] getExtensions ();}2. : :
Filefilterimpl.class
Importer java.io.file; import org.apache.commons.io.filenameutils; / *** 文件过滤器 * / classe publique filefilterimpl implémente filefilter {private String [] extensions; public fileFilterimpl (String ... extensions) {this.extensions = extensions;} / *** 是否接受该文件 * / @ @ overniteb boolean accepte (File FilenameUtils.isextension (pathName.getName (), extensions); } / *** 获取定义的扩展名 * @return * / @ OverRidepublic String [] getExtensions () {return extensions;}}以上所述是小编给大家介绍的 Java 实现文件变化监控 , 希望对大家有所帮助 , 如果大家有任何疑问请给我留言 , 小编会及时回复大家的。在此也非常感谢大家对武林网网站的支持!