一. 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://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.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-3.1.xsd 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.directwebremoting.org/schema/spring-dwr-3.0.xsd http://cxf.apache.org/jaxrs http://cxf.apache.org/schemas/jaxrs.xsd "> <!-文件监测器-> <bean id =" monitor "> <constructor-Arg Index =" 0 "10000"/> <! ref = "Наблюдатель"/> <!-文件观察器-> </bean> <!-文件观察器-> <bean id = "imserver"> <constructor-arg index = "0" value = "d: // uploaddir"/> <!-观察的目录-> <constructor-arg index = "1" ref = "filter"/> <! ref = "Слушатель"/> <!-文件监听器-> </bean> <!-文件监听器-> <bean id = "Слушатель"/> <!-文件过滤器-> <bean id = "filter"> <!-指定文件扩展名 , 只有指定的扩展名文件会被处理。 不同的扩展名间以 "," 间隔 , 如 : : xml, txt, bak-> <constructor-arg index = "0" starue = "/xml"/xml ". </bean> </beans>
二. Spring 上下文加载监听器 : SpringContextLoaderListener.Class
Import javax.servlet.servletContexTevent; Import org.springframework.web.context.contextloaderListener; Public Class SpringContextLister Extends ContextLoaderListener {@Override public void ContextInitialized (EventContexTextent Event) {Super.ContextInitialized (событие); Filemonitor Scanner = getsCanner (); // 启动目录扫描器 scanner.start (); } @Override public void contextDestroyed (EventContexTexTevent Event) {fileMonitor Scanner = getSCanner (); // 关闭目录扫描器 scanner.stop (); super.contextDestroyed (событие); } / ** * 获取目录扫描器 * @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 "version =" 2.4 "> <context-param> <param-name> contextConfiglocation </param-name> <param-value> classpath: Application.xml </param-value> </context-param> <lloader-class> com.web.springcontextloaderlistener </stirlicer-class> </sluster> </web-app>
四. 文件监测器
1. 接口 : Filemonitor.class
Import org.apache.commons.io.monitor.filealterationobserver;/** * 文件监测器角色 */public interface filemonitor {/** * 注册观察器 * @param stemver 观察器 */void addobserver (FileertationObserver Observer); / ** * 删除观察器 * @param stemver 观察器 */ void removeObserver (stirealtatorationObserver Observer); / ** * 获取注册的所有观察器 * @return 观察器集合 */ iteerable <flialterationObserver> 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.io.monitor.filealterationobserver; импорт org.apache.commons.lang3.concurrent.basicthreadfactory;/ * * * * * * * * * * * * * * * * * * * * * * * * * * * * Filemonitor {Private Final FileartationMonitor Monitor; / ** * 监测器线程名称 */ Private Static Final String Monitor_thread_name = "Daemon Monitor File"; / ** * 监测器线程 Демон 标记 */ Частный статический финальный логический демон = false; / ** * 定义监测时间间隔、文件观察器 * @param Интервал 监测时间间隔 * @param stemver 文件观察者 */ filemonitorimpl (int explal, final filealterationobserver stember) {this (интервал, наблюдатель, new BasicThreadThory.Builder (). } / ** * 定义监测时间间隔、文件观察器和线程工厂 * @param Интервал 监测时间间隔 * @param stemver 文件观察器 * @param factory 线程工厂 * / filemonitorimpl (интервал int, final filealterationobserver stemver, final finefactory factory) {this.nonitor = newalterationmonitor (интервал, newealtaturationobserver [] {abserver}); Monitor.SetThreadFactory (Factory); } / ** * 添加文件观察器 * @param xemerver * / @Override public void AddObserver (FilealterationObserver Observer) {monitor.addobserver (stemver); } / ** * 删除文件观察器 * @param visever * / @override public void removeObserver (fileartationObserver stemver) {monitor.removeobserver (stemver); } / ** * 获取注册的所有观察器 * @return * / @Override publicatable <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
Импорт java.io.file; import org.apache.commons.io.monitor.filealterationlistener;/** * 文件观察器角色 */Public Interface PileoBserver {/** * 添加监听器 * @param слушатель */void AddListener (Final FlealterationListener Slirlerer); / ** * 删除监听器 * @param слушатель */ void removelistener (final filalterationLister stirler); / ** * 获取注册的监听器 * @return */ iteerable <fliealterationListener> getListeners (); / ** * 初始化观察器 * @Throhs 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; */plietObserVerimpl Extends Extends FilealtationObserver реализует FileObserver {Private Static Long Long SerialVersionUID = -7239227289538993830L; / ** * 文件过滤器 */ private final FileFilter Filter; / ** * 设置要监听观察的目录 , 并设置文件过滤器和监听器 用以观察指定具有指定扩展名的文件 用以观察指定具有指定扩展名的文件 * @param dir 观察监听的目录 * @param Filter 文件过滤器 * @param прослушивание 文件监听器 */ public fileobserveriMpl (строка Dir, Final FileFilter Filter, FileartationLiterLister Sulderer) {Super (Dir, Filter, (iocase) NULL); AddListener (слушатель); this.filter = filter; File Directory = new File (dir); // 如果目录不存在 if (! Directory.exists ()) {try {fileutils.forcemkdir (Directory); } catch (ioException e) {e.printstackTrace (); }} // 如果存在的是文件 ense if (directory.exists () && directory.isfile ()) {try {fileutils.forceDelete (directory); Fileutils.forcemkdir (каталог); } catch (ioException e) {e.printstackTrace (); }}} / ** * 添加监听器 * / @override public void addlistener (final filalterationListener слушатель) {super.addlistener (слушатель); } / ** * 移除监听器 * / @Override public void removelistener (final filalterationLister слушатель) {super.removelistener (слушатель); } / ** * 获取观察者对象的所有监听器 * / @Override public iteerable <lialterationListener> getListeners () {return super.getListeners (); } / ** * 初始化文件观察者 * / @Override public void инициализация () бросает исключение {super.initialize (); } / ** * 销毁文件观察者 * / @Override public void destress () бросает исключение {super.destroy (); } / ** * 获取所观察的目录 * / @Override public file getDirectory () {return super.getDirectory (); } / ** * 获取文件过滤器 * @return * / public filefilter getFilter () {return Filter; }}六. 文件监听器 : FileListener.Class
Импорт java.io.file; import org.apache.commons.io.monitor.filealterationListerEnerAdaptor; import org.apache.commons.io.monitor.filealterationObserver;/** * 文件监听器 */public final Class fileListener ExterationSteerAdaptor {/** * * * // Чтобы что -то сделать} / ** * 文件删除 (转移) * / @override public void onfilledelete (файл файл) {// Чтобы что -то сделать} / ** * 文件内容改变时执行的动作 * / @override public void onfilechange (файл) {// Чтобы что -то сделать} / ** * 开始执行监听时执行的动作 * @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ Сделай что -нибудь} / ** * 停止监听时执行的动作 * / @override public void onstop (fliealterationObserver 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 filefilterimpl (string ... extensions) {this.extensions = extensions; } / ** * 是否接受该文件 * / @Override public booleancecom Accept (file pathname) {return filenameutils.isextension (pathname.getName (), extensions); } / ** * 获取定义的扩展名 * @return * / @Override public String [] getExtensions () {return Extensions; }}以上这篇 java 实现文件变化监控的方法 (推荐) 就是小编分享给大家的全部内容了 , 希望能给大家一个参考 , 也希望大家多多支持武林网。