一. Spring 配置文件 : 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.xsd http://www.springframework.org/schema/tx/tx/www.spramework.org/schema/tx:tp:tx:-3. 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.orgebremotot.org http://cxf.apache.org/jaxrs http://cxf.apache.org/schemas/jaxrs.xsd "> <!-文件监测器-> <bean id =" monitor "> <konstruktor-arg =" 0 "value =" 10000 "//<!-, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , Ref = "Observer"/> <!-文件观察器-> </ bean> <!-文件观察器-> <bean id = "pengamat"> <konstruktor-arg index = "0" value = "d: // unggahdir"/> <!-观察的目录-> <konstruktor-arg index = "1" ref = "filter"/> <!-文件过滤器-文件过滤器 文件过滤器 文件过滤器 文件过滤器 文件过滤器 文件过滤器 文件过滤器 文件过滤器 文件过滤器 文件过滤器 文件过滤器 文件过滤器 文件过滤器 文件过滤器 文件过滤器 文件过滤器 文件过滤器 文件过滤器 文件过滤器 文件过滤器 文件过滤器 文件过滤器 文件过滤器 文件过滤器 文件过滤器 --> </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); Pemindai filemonitor = getscanner (); // 启动目录扫描器 scanner.start (); } @Override public void ContextDestroyed (event ServletContextEvent) {filemonitor scanner = getscanner (); // 关闭目录扫描器 scanner.stop (); super.contextDestroyed (acara); } / ** * 获取目录扫描器 * @return * / private filemonitor 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.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--k Classpath: classic--k CONDUMENTE--PLINGEM: CONCEDSPATH: CONCEDICET.XML </PARAM-PARAM-PARAM- <listener-class> com.web.springcontextLoaderRistener </listener-class> </engeaner> </seb-app>
四. 文件监测器
1. 接口 : Filemonitor.class
impor org.apache.commons.io.monitor.filealterationObserver;/** * 文件监测器角色 */filemonitor antarmuka publik {/** * 注册观察器 * @param Observer 观察器 */void addobserver (FilealerationObserver Observer); / ** * 删除观察器 * @param Observer 观察器 */ void RemestoBserver (FilealterationObserver Observer); / ** * 获取注册的所有观察器 * @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.filealterationMonitor; impor org.apache.commons.io.monitor.filealerationObserver; org.apache.commons.Lang3.concurrent.basictreadfactory FileMonitorImpl mengimplementasikan filemonitor {monitor filealterasi akhir swasta; / ** * 监测器线程名称 */ Private Static Final String monitor_thread_name = "File Monitor Daemon"; / ** * 监测器线程 daemon 标记 */ private static final boolean daemon = false; / ** * 定义监测时间间隔、文件观察器 * @param Interval 监测时间间隔 * @param Observer 文件观察者 */ filemonitorImpl (interval int, filealerasi akhir pengamat server) {ini (interval, pengamat, basicThreadFactory.buemon (). } / ** * 定义监测时间间隔、文件观察器和线程工厂 * @param Interval 监测时间间隔 * @param Observer 文件观察器 * @param Factory 线程工厂 * / FileMonitorImpl (interval int, FilealterationObserver Observer, pabrik threadfactory akhir) {this.monitor = FileAlterationMonitor (Interval, new FilealterationObserver [] {{{{{{new Observer {interval, Interval, Observer (Interval, Observer (Interval, Observer (Interval, Observer (Interval, Observer (Interval, Observer (Interval, Observer (Interval, Observer (Interval, Obserneration (Interval, Observer (Interval, Observer (Interval, Observer {interval {interval, monitor.setThreadFactory (pabrik); } / ** * 添加文件观察器 * @param Observer * / @Override public void addoBserver (FilealTerationObServer Observer) {monitor.addoBserver (pengamat); } / ** * 删除文件观察器 * @param Observer * / @Override public void RemestoBserver (FilealTerationObServer Observer) {Monitor.RemoveObserver (Observer); } / ** * 获取注册的所有观察器 * @return * / @Override Publik iterable <filealterationObserver> getObserver () {return monitor.getObserver (); } / ** * 启动监测器 * / @Override public void start () {coba {monitor.start (); } catch (Exception e) {E.PrintStackTrace (); }} / ** * 停止监测器 * / @Override public void stop () {coba {monitor.stop (); } catch (Exception e) {E.PrintStackTrace (); }} / ** * 获取监测时间间隔 * / @Override public long getInterval () {return monitor.getInterval (); }}五. 文件观察器
1. 接口 : Fileobserver.class
Impor java.io.file; impor org.apache.commons.io.monitor.filealerationListener;/** * 文件观察器角色 */antarmuka publik Fileobserver {/** * 添加监听器 * @param listener */void addlistener (final filealterationListener listener); / ** * 删除监听器 * @param listener */ void Removelistener (pendengar Final FilealterationListener); / ** * 获取注册的监听器 * @return */ iterable <filealterationListener> getListeners (); / ** * 初始化观察器 * @throws Exception */ void initialize () melempar pengecualian; / ** * 销毁观察器 * @Throws Exception */ void Destroy () 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.acomon.oMonor.monitor.filealererener;当有文件创建、删除、或变更动作时 , 则消息通知监听器 */Kelas Publik FileObServerImpl memperluas FilealterationObserver mengimplementasikan FileobServer {private static final long serialversionuid = -7239227289538993830l; / ** * 文件过滤器 */ filter filefilter akhir pribadi; / ** * 设置要监听观察的目录 , 并设置文件过滤器和监听器 , 用以观察指定具有指定扩展名的文件 * @param dir 观察监听的目录 * @param filter 文件过滤器 * @param listener 文件监听器 */ FileobServerImpl (String Dir, Filter FileFilter akhir, pendengar FilealTerationListener) {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 (); }} // 如果存在的是文件 else if (directory.exists () && directory.isfile ()) {coba {fileutils.forcedelete (direktori); Fileutils.forcemkdir (direktori); } catch (ioException e) {e.printstacktrace (); }}} / ** * 添加监听器 * / @Override void addListener (Final FilealterationListener listener) {super.addlistener (pendengar); } / ** * 移除监听器 * / @Override public void Removelistener (final filealterationListener listener) {super.removeListener (pendengar); } / ** * 获取观察者对象的所有监听器 * / @Override PUBLIK ITERABLE <FILEALTERICELISTER> getListeners () {return super.getListeners (); } / ** * 初始化文件观察者 * / @Override public void initialize () melempar Exception {super.initialize (); } / ** * 销毁文件观察者 * / @Override public void Destroy () melempar Exception {super.destroy (); } / ** * 获取所观察的目录 * / @Override File publik getDirectory () {return super.getDirectory (); } / ** * 获取文件过滤器 * @return * / public filefilter getFilter () {return filter; }}六. 文件监听器 : Filelistener.class
Impor java.io.file; impor org.apache.commons.io.monitor.filealterationListenerAdaptor; impor org.apache.commons.io.monitor.filealterationObserver;/** * 文件监听器 */public final class fileListener memperluas filealterationListenerArtaptor {/** public final 文件创建时执行的动作 文件创建时执行的动作 {** {** {** final { {// Untuk melakukan sesuatu} /*** 文件删除(转移)时执行的动作* /@Override public void onFileDelete (file file) {// Untuk melakukan sesuatu} /*** 文件内容改变时执行的动作* /@Override void public onFileChange (file) {// untuk melakukan sesuatu} /*** 开始执行监听时执行的动作* /@override void publik void {fileasi {{} {} {fileasi {{fileation {fileasi / @eVerRide void { / @eVerRide {停止监听时执行的动作 */ @Override public 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 filefilterImpl (string ... ekstensi) {this.extensions = ekstensi; } / ** * 是否接受该文件 * / @Override public boolean accept (file pathname) {return filenameutils.isextension (pathname.getName (), ekstensi); } / ** * 获取定义的扩展名 * @return * / @Override public string [] getExtensions () {return extensions; }}以上这篇 Java 实现文件变化监控的方法 (推荐) 就是小编分享给大家的全部内容了 , 希望能给大家一个参考 , 也希望大家多多支持武林网。