一. musim semi : :
application.xml
<? XML Versi = "1.0" encoding = "utf-8"?> <beans xmlns = "http://www.springframework.org/schema/beans" xmlns: xsi = "http://www.w3.org/2001/xmls xmlns: tx = "http://www.springframework.org/schema/tx" xmlns: aop = "http://www.springframework.org/schema/aop" xmlns: context = "http:/schaMa/aop" xmlns: context = "http:/schaMa.aop" xmlns: dwr = "http://www.directwebremoting.org/schema/spring-dwr" xmlns: jaxrs = "http://cxf.apache.org/jaxrs" xsi: schemalocation = "http:/org.org http://www.springframework.org/schema/beans/spring-weans-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.xsdhtp://cxf.apache.org/jaxrs http://cxf.apache.org/schemas/jaxrs.xsd">< <apache. id = "monitor" class = "com.interfaces.file.monitor.filemonitorImpl"> <konstruktor-arg index = "0" value = "10000" /> <!-监测时间间隔 , 单位 : 毫秒-> <constructor-arg index = "1" ref = "pengamat" /<!-文件观察器-> < /bean> <! 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.file.monitor.filefilterImpl"> <!-指定文件扩展名 , 只有指定的扩展名文件会被处理。不同的扩展名间以 只有指定的扩展名文件会被处理。不同的扩展名间以 只有指定的扩展名文件会被处理。不同的扩展名间以 间隔 间隔 间隔 间隔 , , , , , , , , , , , , , , , , -> <constructor-arg index = "0" value = "xml"/> </ bean> </tacer>
二. musim semi : :
SpringContextLoaderListener.class
import javax.servlet.ServletContextEvent;import org.springframework.web.context.ContextLoaderListener;public class SpringContextLoaderListener extends ContextLoaderListener{@Overridepublic void contextInitialized(ServletContextEvent event) {super.contextInitialized(event);FileMonitor scanner = getscanner (); // 启动目录扫描器 scanner.start ();} @overridepublic void contextDestroyed (event servletcontextEvent) {filemonitor scanner = getscanner (); // 关闭目录扫描器 scanner.stop (); super.contextDestroyed (event);}/*** {); 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.org.org.org/org/xja." XSI: schemalocation = "http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_4.xsd http://xmlnsmlnsmp.orgerg/xma/xmlnsmlnsmln.jcp.orger http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd " Versi = "2.4"> <context-param> <param-name> ContextConfigLocation </param-name> <param-value> classpath: application.xml </param-value> </context-param> <le listener> <listener-class> com.web.springcontextLoadListener </listener> </listener> com.web.springcontextLoadListener </listener> </listener>
四. 文件监测器
1. 接口 : Filemonitor.class
impor org.apache.commons.io.monitor.filealterationObserver;/*** 文件监测器角色*/filemonitor antarmuka publik {/*** 注册观察器*@param Observer 观察器*/void addobserver (filealerationObserver Observer);/*** 删除观察器*@param Observer 观察器*/void RemeBeration (Observer @param Observer 观察器 观察器 @param Observer 观察器 @param Observer @ @@param /*** 获取注册的所有观察器*@return 观察器集合*/iterable <filealterationoBserver> getObserver (); /*** 启动监测器*/void start (); /*** 停止监测器*/void stop (); /*** 获取监测间隔时间*@return 间隔时间(单位 : 毫秒)*/long getInterval (); } 2. 实现类 : FileMonitorImpl.class
Impor java.util.concurrent.threadfactory; impor org.apache.commons.io.monitor.filealterationonitor; impor org.apache.commons.io.monitor.filealerationObserver; Impor org.apache.commons.Lang3.conCurrent.BASICTHREADFACTORY FileMonitorImpl mengimplementasikan filemonitor {Private Final FilealterationMonitor Monitor;/*** 监测器线程名称*/Private Static Final String Monitor_Thread_name = "File Monitor Daemon";/*** 监测器线程 Daemon 标记*/Private Static Boolean Daemon = False;/*** 定义监测时间间隔、文件观察器*@param Interval 监测时间间隔*@param Observer 文件观察者 文件观察者 文件观察者 文件观察者 @ @* {this (interval, pengamat, basicThreadFactory.builder (). NamingPattern (monitor_thread_name) .daemon (daemon) .build ()); } /*** 定义监测时间间隔、文件观察器和线程工厂* @param Interval 监测时间间隔* @param Observer 文件观察器* @param Factory 线程工厂* /FileMonitorImpl (interval int, FilealTerationObserver Observer Final, FinalFactory ThreadFactory) {this.monitor = new fileLeAlterationMonitor (interval, filealterasi baru. }/*** 添加文件观察器*@param Observer*/ @overridepublic void addObserver (FilealterationationObserver Observer) {monitor.addoBserver (pengamat);}/*** 删除文件观察器*@param Observer*/ @overridepublic void rapeobserver (Filealtertererasi; @params server.获取注册的所有观察器*@return*/@overridepublic iterable <filealterationObserver> getObserver () {return monitor.getObserver ();}/*** 启动监测器*/@overridepublic void start () {try {monitor.start ();} catch (Exception e) {e.printStack (monitor.start ();} {E. E.PrintScrace (); stop () {coba {monitor.stop ();} catch (exception e) {e.printstacktrace ();}}/*** 获取监测时间间隔*/@overridepublic long getInterval () {return monitor.getInterval (); }}五. 文件观察器
1. 接口 : Fileobserver.class
Impor java.io.file; impor org.apache.commons.io.monitor.filealterationListener;/*** 文件观察器角色*/antarmuka publik FileObserver {/*** 添加监听器*@param listener*/void addlistener (filealterationListener listener);/*** 删除监听器*@param listener/voiderenerenerenerenerenerenerenerenerenerenerenerenerenerenerenerenerenerenerenerenerenerenerenerenerenerenerenerenerenerenerenerenerenerenerenerene (*** @* pendengar);/*** 获取注册的监听器* @return*/iterable <filealterationListener> getListeners (); /*** 初始化观察器*@Throws Exception*/void initialize () melempar pengecualian; /*** 销毁观察器*@Throws Exception*/void hancur () melempar pengecualian; /*** 获取观察的目录* @return*/file getDirectory ();/*** 获取文件过滤器** @return*/public filefilter getFilter ();} 2. 实现类 : FileobServerImpl.class
Impor java.io.file; impor java.io.ioException; impor org.apache.commons.io.fileutils; impor org.apache.commons.io.iocase; impor org.apache.commons.monitor.fileAlterationListener; impor org.apache.commons.oMon.oMon.monitor.当有文件创建、删除、或变更动作时 , 则消息通知监听器*/FileobServerImpl kelas publik memperluas filealerationObserver mengimplementasikan fileObserver {private static final long serialversionuid = -7239227289538993830l;/*** 文件过滤器*/filter private final filter;/*** 设置要监听观察的目录 , , , , @parparam文件监听器*/FileobServerImpl (String Dir, Filter FileFilter Akhir, FilealterationListener Listener) {super (dir, filter, (iocase) null); addListener (pendengar); this.filter = filter; direktori file = file baru (dir); // 如果目录不存在 if (! Directory.exists ()) {coba {fileutils.forcemkdir (direktori);} catch (ioException e) {e.printstacktrace ();}} // 如果存在的是文件 如果存在的是文件 if {ioException e) {e.printstacktrace (); {FileUtils.forceDelete(directory);FileUtils.forceMkdir(directory);} catch (IOException e) {e.printStackTrace();}}}/*** 添加监听器*/@Overridepublic void addListener(final FileAlterationListener listener) {super.addListener(listener);}/***移除监听器*/@overridepublic void removelistener (pendengar FilealterationListener akhir) {super.removelistener (pendengar);}/*** 获取观察者对象的所有监听器*/@overridepublic iterable <filealterationListener> getListens () {return super.getListeners ();} (}@*@@@{return@{return supergetListen ();}; {super.initialize ();}/*** 销毁文件观察者*/@overridepublic void dashar () melempar Exception {super.destroy ();}/*** 获取所观察的目录*/@overridepublic file getDirectory () {return super.getDirectory ();}/*** 获取文件过滤器@return {public.六. 文件监听器 :
Filelistener.class
Impor java.io.file; impor org.apache.commons.io.monitor.filealterationListenerAdaptor; impor org.apache.commons.io.monitor.filealterationObserver;/*** 文件监听器*/public final class file overeLerTerterationListenerArdaptor {/*/overpeat@* {// Untuk melakukan sesuatu}/*** 文件删除(转移)时执行的动作*/@overridepublic void onFileDeLete (file file) {// Untuk melakukan sesuatu}/*** 文件内容改变时执行的动作*/@overridepublic void onfileChange (file) {// untuk melakukan sesuatu}/*** 开始执行监听时执行的动作*/@overridePublic void void on -ststart {fileasi {{overrideplic void void {fileasi {} {{everation {{{everation {{{fileasi {停止监听时执行的动作*/@overridepublic void onStop (FilealterationObserver Observer) {// Untuk melakukan sesuatu}}七. 文件过滤器
1. 接口 : Filefilter.class
/*** 文件过滤器角色 , 扩展自 java.io.filefilter*/antarmuka publik FileFilter memperluas java.io.fileFilter {/*** 获取定义的扩展名** @return*/string [] getExtensions ();}2. : :
Filefilterimpl.class
Impor java.io.file; impor org.apache.commons.io.filenameutils;/*** 文件过滤器*/kelas publik FilefilterImpl mengimplementasikan filefilter {private string [] ekstensi; public {string ... extensions) {this.extensions = extensions;}/*return {extensions*{this.extensions = extensions;}/{string@{this.extensions = extensions;}/* Filenameutils.isextension (pathname.getName (), ekstensi); }/*** 获取定义的扩展名*@return*/ @overridepublic string [] getExtensions () {return extensions;}}以上所述是小编给大家介绍的 Java 实现文件变化监控 , 希望对大家有所帮助 , 如果大家有任何疑问请给我留言 , 小编会及时回复大家的。在此也非常感谢大家对武林网网站的支持!