一. Frühling 配置文件 :
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.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/springdwr-3.0.xsdhttp://cxf.apache.org/jaxrs http://cxf.apache.org/schemas/jaxrs.xsd"><! id = "Monitor" class = "com.interfaces.file.Monitor.filemonitorImpl"> <constructor-arg Index = "0" value = "10000" /> <!-监测时间间隔 , 单位 : 毫秒-> <Constructor-Arg Index = "1" Ref = "Observer" /> <! id="observer"class="com.interfaces.file.monitor.FileObserverImpl"><constructor-arg index="0" value="D://UploadDir"/> <!-- 观察的目录 --><constructor-arg index="1" ref="filter"/> <!-- 文件过滤器--><constructor-arg index="2" ref="listener"/> <!-- 文件监听器-> </bean> <!-文件监听器-> <bean id = "listener" class = "com.interfaces.file.monitor.filelistener"/> <!-文件过滤器-> <bean id = "filter" class = "com.interfaces.filit.Monitor -> <constructor-arg index = "0" value = "xml"/> </bean> </beans>
二. Frühling 上下文加载监听器 :
SpringContextLoaderListener.class
importieren javax.servlet.servletContexevent; import org.springframework getScanner();// 启动目录扫描器scanner.start();}@Overridepublic void contextDestroyed(ServletContextEvent event) {FileMonitor scanner = getScanner();// 关闭目录扫描器scanner.stop();super.contextDestroyed(event);}/*** 获取目录扫描器* @return*/private FileMonitor getScanner() {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><param-value>classpath:application.xml</param-value></context-param><listener><listener-class>com.web.SpringContextLoaderListener</listener-class></listener></web-app>
四. 文件监测器
1. : Filemonitor.Class
import org.apache.commons.io.monitor.filealterationObserver;/*** 文件监测器角色*/public interface filemonitor {/*** 注册观察器*@param Beobachter 观察器*/void Addobserver (FileAlterationObserver); /*** 获取注册的所有观察器*@Return 观察器集合*/iterable <FileAlterationObserver> getOboBServers (); /*** 启动监测器*/void start (); /*** 停止监测器*/void stop (); /*** 获取监测间隔时间*@return 间隔时间(单位 : 毫秒)*/long getInterval (); } 2. : FilemonitorImpl.Class
import Java.util.concurrent FileMonitorImpl implements 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 文件观察者*/FileMonitorImpl(int interval, final FileAlterationObserver Observer) {this (Intervall, Beobachter, neuer BasicThreadFactory.builder (). NamingPattern (monitor_thread_name) .daemon (Daemon) .build ()); } /*** 定义监测时间间隔、文件观察器和线程工厂* @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(factory); }/*** 添加文件观察器*@param Observer*/ @oversidepublic void AddobServer (FileAlterationObserver Observer) {monitor.addobServer (Beobachter);}/*** 删除文件观察器*@param Observer*/ @oversidepublic void removeObserver (FileAlterationObserver). {Monitor.RemoveObServer (Beobachter);}/*** 获取注册的所有观察器*@return*/@oversidepublic iterable <fileAlterationObServer> getOboBServers () {return Monitor.getOBServers ();}/*** 启动监测器*/@oversidepublic void start () {) {try {try {machung {machung () {machung () {machung () {machung () {machung (); {e.printStackTrace ();}}/*** 停止监测器*/@oversidepublic void stop () {try {monitor.stop ();} catch (exception e) {e.printStackTrace ();}}/*** 获取监测时间间隔*/@oversidepublic long getinterval () {) {) {) {) {) {) {) {) monitor (); }}五. 文件观察器
1. : : FileObserver.class
Importieren Sie java.io.file; import org.apache.commons.io.monitor.filealterationListener;/*** 文件观察器角色*/public interface fileObserver {/*** 添加监听器*@param louser*/void addlistener (endgültige FilealerationListener -Listener (endgültig "/*** 删除监听器*@Param Hörer*/Void Removelistener (endgültiger Filteurlistener (@Param)*/Void Removelistener (endgültiger Filialer -Listener (@Param)*/Void Removelistener (endgültiger Filialfilterer (void"/voiid renovelistener (endgültiges 删除监听器*@Param louser*/voidener (varaalDener: Hörer);/*** 获取注册的监听器* @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.io.iocase;当有文件创建、删除、或变更动作时 , 则消息通知监听器*/public class FileObServerImpl erweitert FileAeAlterationObServer implementiert FileObserver {private statische endgültige long serialversionuid = -723922728953893830l;/*** 文件过滤器*/private endgültige Filter Filter; Hörer 文件监听器*/public FileObserverImpl (String -Dir, endgültiger Filterfilter, Filter für Filter, Filter, Filter, (iocase) null); this.filter = filter;File directory = new File(dir);// 如果目录不存在if(!directory.exists()) {try {FileUtils.forceMkdir(directory);} catch (IOException e) {e.printStackTrace();}}// 如果存在的是文件else if(directory.exists() && directory.isFile()) {try {FileUtils.forceDelete(directory);FileUtils.forceMkdir(directory);} catch (IOException e) {e.printStackTrace();}}}/*** 添加监听器*/@Overridepublic void addListener(final FileAlterationListener listener) {super.addListener(listener);}/*** 移除监听器*/@Overridepublic void removeListener(final FileAlterationListener listener) {super.removeListener(listener);}/*** 获取观察者对象的所有监听器*/@Overridepublic Iterable<FileAlterationListener> getListeners() {return super.getListeners();}/*** 初始化文件观察者*/@Overridepublic void initialize() throws Exception {super.initialize ();}/*** 销毁文件观察者*/@oversidepublic void destous () löst Ausnahme aus {super.destroy ();}/*** 获取所观察的目录*/@oversidePublic -Datei getDirectory () {return Super.getDirectory ();}/*** 获取文件过滤器*@@return六. 文件监听器 :
Filelistener.class
importieren java.io.file; import org.apache.commons.io.monitor.filealterationListeneradaptor; Oder etwas}/*** 停止监听时执行的动作*/@oversidepublic 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
import java.io.File;import org.apache.commons.io.FilenameUtils;/*** 文件过滤器*/public class FileFilterImpl implements FileFilter{private String[] extensions;public FileFilterImpl(String... extensions) {this.extensions = extensions;}/*** 是否接受该文件*/@Overridepublic boolean accept(File pathname) {return DateinameUtils.ISExtiere (Pathname.getName (), Erweiterungen); }/*** 获取定义的扩展名*@return*/ @oversidepublic String [] getextensions () {return extensions;}}以上所述是小编给大家介绍的 Java 实现文件变化监控 , 希望对大家有所帮助 , 如果大家有任何疑问请给我留言 , 小编会及时回复大家的。在此也非常感谢大家对武林网网站的支持! 小编会及时回复大家的。在此也非常感谢大家对武林网网站的支持! 小编会及时回复大家的。在此也非常感谢大家对武林网网站的支持!