一. Feder 配置文件 : application.xml
<? xmlns:tx="http://www.springframework.org/schema/tx" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:context="http://www.springframework.org/schema/context" xmlns: dwr = "http://www.directwebremoting.org/schema/spring-dwr" xmlns: jaxrs = "http:/cxf.apache.org/jaxrs" xsi: Schemalocation = "http./wwwwwwwwwwwwwwwwwwwwwwwaNwork http://www.springframework.org/schema/beans/spring-beans-3.1.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/sping-tx- 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.directwebrem.0.m.0.0. http://cxf.apache.org/jaxrs http://cxf.apache.org/schemas/jaxrs.xsd"> <!-- 文件监测器 --> <bean id="monitor" > <constructor-arg index="0" value="10000" /> <!-- 监测时间间隔,单位:毫秒 --> <constructor-arg index="1" ref="observer" /> <!-- 文件观察器 --> </bean> <!-- 文件观察器 --> <bean id="observer" > <constructor-arg index="0" value="D://UploadDir"/> <!-- 观察的目录 --> <constructor-arg index="1" ref="filter"/> <!-- 文件过滤器--> <constructor-arg index="2" ref="listener"/> <!-- 文件监听器 --> </bean> <!-- 文件监听器 --> <bean id="listener" /> <!-- 文件过滤器 --> <bean id="filter" > <!-- 指定文件扩展名,只有指定的扩展名文件会被处理。 不同的扩展名间以 "," 间隔,如:xml,txt,bak --> <constructor-arg index="0" value="xml"/> </bean> </beans>
二. Spring 上下文加载监听器 : SpringContextloaderListener.Class
import javax.servlet.ServletContextEvent;import org.springframework.web.context.ContextLoaderListener;public class SpringContextLoaderListener extends ContextLoaderListener{ @Override public void contextInitialized(ServletContextEvent event) { super.contextInitialized(event); Filemonitor scanner = getCanner (); // 启动目录扫描器 scanner.start (); } @Override public void contextDestroyed (servletContexevent event) {filemonitor scanner = getCanner (); // 关闭目录扫描器 scanner.Stop (); Super.ContextDestroyed (Ereignis); } / ** * 获取目录扫描器 * @return * / private filemonitor getCanner () {return getCurrentWebApplicationContext (). GetBean (filemonitor.class); }}三. Web : : web.xml
<? xsi: scheMalocation = "http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_4.xsd http:/xmlns.jcp.orge/xml/xml/xml/xml/xml/xml/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 <Hörerklasse> com.web.springContextLoaderListener </Listener-Klasse> </listener> </web-App>
四. 文件监测器
1. : Filemonitor.Class
import org.apache.commons.io.monitor.filealterationObServer;/** * 文件监测器角色 */public interface filemonitor {/** * 注册观察器 * @param Observer 观察器 */void Addobserver (FileAlerationObserver Observer); / ** * 删除观察器 * @Param Observer 观察器 */ void RemovalObServer (FileAlterationObserver Observer); / ** * 获取注册的所有观察器 * @return 观察器集合 */ iterable <FileAlterationObserver> getOboBServers (); / ** * 启动监测器 */ void start (); / ** * 停止监测器 */ void stop (); / ** * 获取监测间隔时间 * @return 间隔时间(单位 : 毫秒) */ long getInterval (); }2. : FilemonitorImpl.Class
import Java.util.concurrent FilemonitorImpl implementiert filemonitor {private endgültige FileAlterationMonitor Monitor; / ** * 监测器线程名称 */ private statische String String monitor_thread_name = "Datei Monitor Daemon"; / ** * 监测器线程 Daemon 标记 */ Private statische endgültige Boolesche Daemon = false; / ** * 定义监测时间间隔、文件观察器 * @param intervall 监测时间间隔 * @param observer 文件观察者 */ filemonitorImpl (int intervall, endgültig filealterationObserver observer) {this (Intervall, Beobachter, neuer BasicThreadfactory.builder (). } /** * 定义监测时间间隔、文件观察器和线程工厂 * @param interval 监测时间间隔 * @param observer 文件观察器 * @param factory 线程工厂 */ FileMonitorImpl(int interval, final FileAlterationObserver observer, final ThreadFactory factory) { this.monitor = new FileAlterationMonitor(interval, new FileAlterationObserver[] { observer }); Monitor.SetthreadFactory (Fabrik); } / ** * 添加文件观察器 * @param Observer * / @Override public void Addobserver (FileAlterationObServer Observer) {Monitor.AddobServer (Beobachter); } / ** * 删除文件观察器 * @param Observer * / @Override public void removeObServer (FileAlterationObserver Observer) {Monitor.RemoveObServer (Beobachter); } / ** * 获取注册的所有观察器 * @return * / @Override public iterable <fileAlterationObServer> getObservers () {return monitor.getObservers (); } / ** * 启动监测器 * / @Override public void start () {try {monitor.start (); } catch (Ausnahme e) {e.printstacktrace (); }} / ** * 停止监测器 * / @Override public void stop () {try {monitor.stop (); } catch (Ausnahme e) {e.printstacktrace (); }} / ** * 获取监测时间间隔 * / @Override public long getInterval () {return monitor.getInterval (); }}五. 文件观察器
1. : : FileObserver.class
Importieren Sie java.io.file; import org.apache.commons.io.monitor.filealterationListener;/** * 文件观察器角色 */public interface fileObserver {/** * 添加监听器 * @param listener */void addListener (endgültige FileAlterationInerIner -Listener); / ** * 删除监听器 * @param louser */ void removelistener (endgültige FileAlterationListener -Listener); / ** * 获取注册的监听器 * @return */ iterable <FileAlterationListener> getListeners (); / ** * 初始化观察器 * @throws Exception */ void initialize () löst Ausnahme aus; / ** * 销毁观察器 * @Throws Exception */ void Destroy () löst eine Ausnahme aus; / ** * 获取观察的目录 * @Return */ Datei getDirectory (); / ** * 获取文件过滤器 * * @return */ public FileFilter getFilter ();}2. : : FileObserverImpl.Class
import Java.io.file; import Java.io.ioxception; import org.apache.commons.io.fileutils; import org.apache.commons.iocase;当有文件创建、删除、或变更动作时 , 则消息通知监听器 */public class FileObServerImpl erweitert FileAlterationObServer implementiert FileObserver {private statische endgültige long serialversionuid = -723922728953893830L; / ** * 文件过滤器 */ private endgültige Filterfilter; / ** * 设置要监听观察的目录 , 并设置文件过滤器和监听器 , 用以观察指定具有指定扩展名的文件 用以观察指定具有指定扩展名的文件 * @param dir 观察监听的目录 * @param filter 文件过滤器 * @param louser 文件监听器 */ public FileObServerImpl (String Dir, endgültiger Filter filter, Filter, FilterationListener -Hörer) {Super (Dir, Filter, (iocase) null); Addierener (Hörer); this.filter = filter; Dateiverzeichnis = neue Datei (DIR); // 如果目录不存在 if (! Directory.Exists ()) {try {FileUtils.forcemkdir (Verzeichnis); } catch (ioException e) {e.printstacktrace (); }} // 如果存在的是文件 else if (diriMtory.exists () && verzeichnis.isfile ()) {try {FileUtils.forcedelete (Verzeichnis); FileUtils.forcemkdir (Verzeichnis); } catch (ioException e) {e.printstacktrace (); }}} / ** * 添加监听器 * / @Override public void addListener (endgültige FileAlterationListener -Listener) {Super.AddListener (Listener); } / ** * 移除监听器 * / @Override public void removelistener (endgültige FileAlterationListener -Hörer) {Super.Removelistener (Hörer); } / ** * 获取观察者对象的所有监听器 * / @Override public iterable <filealterationListener> getListeners () {return Super.getListeners (); } / ** * 初始化文件观察者 * / @Override public void initialize () löst Ausnahme aus {Super.initialize (); } / ** * 销毁文件观察者 * / @Override public void desto () löst eine Ausnahme aus {Super.Destroy (); } / ** * 获取所观察的目录 * / @Override öffentliche Datei getDirectory () {return Super.getDirectory (); } / ** * 获取文件过滤器 * @return * / public FileFilter getFilter () {return filter; }}六. 文件监听器 Filelistener.Class
importieren java.io.file; import org.apache.commons.io.monitor.filealterationListeneradaptor; Datei) {// etwas zu tun} / ** * 文件删除(转移)时执行的动作 * / @Override public void onFiledElete (Dateidatei) {// etwas zu tun} / ** * 文件内容改变时执行的动作 * / @Override public void onFilechange (Datei Datei) {// etwas zu tun} / ** * 开始执行监听时执行的动作 * / @Override öffentlich öffentlich void void auf start (filealterationoBso. / ** * 停止监听时执行的动作 * / @Override public void onStop (FileAlterationObserver Observer) {// etwas zu tun}}七. 文件过滤器
1. : : FileFilter.Class
/** * 文件过滤器角色 , 扩展自 java.io.filefilter */public interface fileFilter erweitert java.io.fileFilter {/** * 获取定义的扩展名 * * @return */string [] getextensions ();};2. : : FileFilterImpl.Class
importieren java.io.file; import org.apache.commons.io.filenameutils;/** * 文件过滤器 */public class FileFilterImpl implementiert FileFilter {private String [] Erweiterungen; public FileFilTerImpl (String ... Extensions) {this.extensions = Extensions; } / ** * 是否接受该文件 * / @Override public boolean Accept (Datei pathname) {return FileNameUtils.isextension (pathname.getName (), Erweiterungen); } / ** * 获取定义的扩展名 * @return * / @Override public String [] GetExtensions () {return extensions; }}以上这篇 Java 实现文件变化监控的方法 (推荐) 就是小编分享给大家的全部内容了 , 希望能给大家一个参考 , 也希望大家多多支持武林网。 也希望大家多多支持武林网。