一. printemps 配置文件 : 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.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.1.xsdd 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.xssedoting/schema/ http://cxf.apache.org/jaxrs http://cxf.apache.org/schemas/jaxrs.xsd "> <! - 文件监测器 -> <bean id =" Monitor " Ref = "Observer" /> <! - 文件观察器 -> </ bean> <! - 文件观察器 -> <bean id = "Observer"> <Constructor-arg index = "0" value = "d: // uploaddir" /> <! - 观察的目录 -> <constructor-arg index = "1" Ref = "filter" /> <! - 文件过滤器 -> <constructeur-arg-arg index = "2" ref = "/> <! - 文件过滤器 文件过滤器> <constructeur-arg-arg index =" 2 "ref =" /> <! - -> <constructeur-arg-arg index = "2" réfr = "/> <! - -> <constructeur-arg-arg index =" 2 »文件监听器 -> </ bean> <! - 文件监听器 -> <bean id = "écouteur" /> <! - 文件过滤器 -> <bean id = "filter"> <! - 指定文件扩展名 , 只有指定的扩展名文件会被处理。 不同的扩展名间以 不同的扩展名间以 "," 间隔 , 如 : xml, txt, bak -> <constructeur-arg index = "0" value = "xml" /> </Ean> </eans>
二. Spring 上下文加载监听器 : SpringContextLoaderListener.class
Importer javax.servlet.servletContexTevent; import org.springframework.web.context.contextLoaderListener; classe publique SpringContextoListener étend ContextLoaderListener {@Override public void contextinitialized (ServletContexTevent Event) {super.ContexInitialized (événement); FileMonitor Scanner = GetSCanner (); // 启动目录扫描器 Scanner.Start (); } @Override public void contextDestRoyed (ServletContexTevent Event) {FileMonitor Scanner = GetSCanner (); // 关闭目录扫描器 Scanner.stop (); super.ContextDestRoyed (événement); } / ** * 获取目录扫描器 * @return * / filemonitor privé 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/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> </ Param-Value> <Douger> <écouteur-classe> com.web.springContextLoaderListener </ écouteur-classe> </diner> </ web -pp>
四. 文件监测器
1. 接口 : Filemonitor.Class
import org.apache.commons.io.monitor.filealterationObserver; / ** * 文件监测器角色 * / interface publique Filemonitor {/ ** * 注册观察器 * @param observateur 观察器 * / void addoBserver (filealterationObserver Observer); / ** * 删除观察器 * @param Observer 观察器 * / void retireObserver (FilealterationObserver Observer); / ** * 获取注册的所有观察器 * @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 {Filealteration FilealterationMonitor privé Monitor; / ** * 监测器线程名称 * / private static final string monitor_thread_name = "File Monitor Daemon"; / ** * 监测器线程 Daemon 标记 * / STATIC FINAL STATIC FINAL BOOLEAN DAEMON = FALSE; / ** * 定义监测时间间隔、文件观察器 * @param interval 监测时间间隔 * @param Observer 文件观察者 * / fileMonitorImpl (int interval, filealterationobserver Observer) {this (interval, observateur, nouveau BasicThreadFactory.builder (). NamingPattern (monitor_thread_name) .daemon (demem) .build ()); } / ** * 定义监测时间间隔、文件观察器和线程工厂 * @param Interval 监测时间间隔 * @param Observer 文件观察器 * @param Factory 线程工厂 * / FileMonitorImpl (int interval, FilealterationObserver Observer, Final ThreadFactory Factory) {this.monitor = New FilealterationMonitor (Interval, New FilealterationObserver [] {Observer}); Monitor.SetThreadFactory (Factory); } / ** * 添加文件观察器 * @param Observer * / @Override public void addObserver (filealterationObserver Observer) {monitor.addobserver (observateur); } / ** * 删除文件观察器 * @param Observer * / @Override public void removeObserver (filealterationObserver Observer) {monitor.removeObserver (observateur); } / ** * 获取注册的所有观察器 * @return * / @Override public iTable <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; / ** * 文件观察器角色 * / interface publique FileObserver {/ ** * 添加监听器 * @param écouteur * / void addListener (Final FirealterationListener auteur); / ** * 删除监听器 * @param écouteur * / void reloveListener (Final FilealterationListener Écouteur); / ** * 获取注册的监听器 * @return * / itéable <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;当有文件创建、删除、或变更动作时 , 则消息通知监听器 * / classe publique FileObserverImpl étend FilealterationObserver implémente FileObserver {private static final long SerialVersionUID = -7239227289538993830L; / ** * 文件过滤器 * / filtre Final FileFilter final privé; / ** * 设置要监听观察的目录 , 并设置文件过滤器和监听器 , 用以观察指定具有指定扩展名的文件 * @param dir 观察监听的目录 * @param filtre 文件过滤器 * @param écouteur 文件监听器 * / public fileObserverImpl (String dir, filefilter final filter, filealterationListener écouteur) {super (dir, filter, (iocase) null); addListener (écouteur); this.filter = filtre; Directory de fichier = nouveau fichier (dir); // 如果目录不存在 if (! Directory.exists ()) {try {fileutils.forcemkdir (répertoire); } catch (ioException e) {e.printStackTrace (); }} // 如果存在的是文件 else if (Directory.exists () && Directory.isfile ()) {try {fileUtils.forcedelelete (répertoire); FileUtils.forcemkdir (répertoire); } catch (ioException e) {e.printStackTrace (); }}} / ** * 添加监听器 * / @Override public void addListener (Final FilealterationListener Écouteur) {super.addListener (écouteur); } / ** * 移除监听器 * / @Override public void removeListener (Final FilealterationListener Écouteur) {super.removeListener (écouteur); } / ** * 获取观察者对象的所有监听器 * / @Override public iTable <filealterationListener> getListeners () {return super.getListeners (); } / ** * 初始化文件观察者 * / @Override public void initialize () lève l'exception {super.inialialize (); } / ** * 销毁文件观察者 * / @Override public void destren () lève l'exception {super.destroy (); } / ** * 获取所观察的目录 * / @Override public 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 FilealterationListeDaptor {/ ** * 文件创建时执行的动作 * * / @override public Void sur sur le fichier (fichier) 文件创建时执行的动作 * 文件创建时执行的动作 文件创建时执行的动作 * / / @Override Public Void sur sur onfille // pour faire quelque chose} / ** * 文件删除 (转移 转移) 时执行的动作 * / @Override public void onfiledelete (fichier de fichier) {// pour faire quelque chose} / ** * 文件内容改变时执行的动作 * / @Override public void onfileChange (fichier de fichier) {// pour faire quelque chose} / ** * 开始执行监听时执行的动作 * / @Override public void onstart (filialationobs quelque chose} / ** * 停止监听时执行的动作 * / @Override public 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
import java.io.file; import org.apache.commons.io.filenameutils; / ** * 文件过滤器 * / classe publique FileFilterimpl implémente fileFilter {private String [] extensions; public fileFilTeImpl (String ... Extensions) {this.Extensions = extensions; } / ** * 是否接受该文件 * / @Override public boolean accepte (fichier pathname) {return filenameUtils.isextension (pathname.getName (), extensions); } / ** * 获取定义的扩展名 * @return * / @Override public String [] getExtensions () {return extensions; }}以上这篇 Java 实现文件变化监控的方法 (推荐) 就是小编分享给大家的全部内容了 , 希望能给大家一个参考 , 也希望大家多多支持武林网。