一. ฤดูใบไม้ผลิ配置文件: application.xml
<? xml version = "1.0" การเข้ารหัส = "utf-8"?> <beans xmlns = "http://www.springframework.org/schema/beans" xmlns: xsi = "http://ww.w3.org/2001/xml xmlns: tx = "http://www.springframework.org/schema/tx" xmlns: aop = "http://www.springframework.org/schema/aop" xmlns: บริบท = "http:/ xmlns: dwr = "http://www.directwebremoting.org/schema/spring-dwr" xmlns: jaxrs = "http://cxf.apache.org/jaxrs" xsi: schemalocation = "http:/ http://www.springframework.org/schema/beans/spring-beans-3.1.xsd http://www.springframework.org/schema/tx http://ww.springframework.org/schema http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.1.xsd http://www.springframework http://www.springframework.org/schema/context/spring-context-3.1.xsd http://www.directwebremoting.org/schema/spring-dwr http://cxf.apache.org/jaxrs http://cxf.apache.org/schemas/jaxrs.xsd "> <!-文件监测器-> <bean id =" monitory "> <constructor-arg index =" 0 "value =" 10000 "/> ref = "observer"/> <!-文件观察器-> </ebean> <!-文件观察器-> <bean id = "Observer"> <constructor-Arg index = "0" value = "d: // uploaddir"/> <!-观察的目录-> ref = "Listener"/> <!-文件监听器-> </ebean> <!-文件监听器-> <bean id = "Listener"/> <!-文件过滤器-> <bean id = "ตัวกรอง"> <! </ebean> </ebeans>
二. Spring 上下文加载监听器: SpringContextloaderListener.class
นำเข้า javax.servlet.servletContextEvent; นำเข้า org.springframework.web.context.contextloaderlistener; คลาสสาธารณะ SpringContextloaderListener ขยายบริบท listener {@Override void contextinitialized Scanner fileMonitor = getScanner (); // 启动目录扫描器 scanner.start (); } @Override เป็นโมฆะสาธารณะบริบท (Event ServletContextEvent) {FileMonitor Scanner = GetSCanner (); // 关闭目录扫描器 scanner.stop (); super.contextdestroyed (เหตุการณ์); } / ** * 获取目录扫描器 * @return * / private fileMonitor getScanner () {return getCurrentWebapplicationContext (). getBean (fileMonitor.class); -三. เว็บ工程配置文件: web.xml
<? xml version = "1.0" การเข้ารหัส = "utf-8"?> <web-app xmlns: xsi = "http://www.w3.org/2001/xmlschema-instance" xmlns: web = "http://xmlns.jcp.org/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.org/xml http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd "เวอร์ชัน =" 2.4 "> <context-param> <param-name> contextconfiglocation </param-name> <Sistener-class> com.web.springContextloaderListener </listener-class> </listener> </eb-app>
四. 文件监测器
1. 接口: filemonitor.class
นำเข้า org.apache.commons.io.monitor.filealterationobserver;/** * 文件监测器角色 */อินเตอร์เฟสสาธารณะ filemonitor {/** * 注册观察器 * @param Observer 观察器 */void addobserver / ** * 删除观察器 * @param Observer 观察器 */ void removeObserver (ผู้สังเกตการณ์ filealterationobserver); / ** * 获取注册的所有观察器 * @return 观察器集合 */ iterable <TelealterationObserver> getObServers (); / ** * 启动监测器 */ void start (); / ** * 停止监测器 */ void stop (); / ** * 获取监测间隔时间 * @return 间隔时间(单位: 毫秒) */ long getInterval (); -2. 实现类: filemonitorimpl.class
นำเข้า java.util.concurrent.threadfactory; นำเข้า org.apache.commons.io.monitor.filealterationMonitor; นำเข้า org.apache.commons.io.mon.filealterationObserver; นำเข้า org.apache.Commons.lang3.concurrent.basicthread; ใช้ fileMonitor {มอนิเตอร์ FILELELTERATIONMONITOR ส่วนตัวขั้นสุดท้าย; / ** * 监测器线程名称 */ สตริงสุดท้ายคงที่ private string monitor_thread_name = "file monitor daemon"; / ** * 监测器线程 daemon 标记 */ ส่วนตัวคงที่บูลีนสุดท้าย daemon = false; / ** * 定义监测时间间隔、文件观察器 * @param Interval 监测时间间隔 * @param Observer 文件观察者 */ filemonitorimpl (ช่วงเวลา int, filealterationobserver ขั้นสุดท้าย) {this (Interval, Observer, New BasicThadFactory.builder () NamingPattern (monitor_thread_name) } / ** * 定义监测时间间隔、文件观察器和线程工厂 * @param Interval 监测时间间隔 * @param Observer 文件观察器 * @param Factory 线程工厂 * / filemonitorimpl (ช่วงเวลา int, ผู้สังเกตการณ์ filealterationobserver สุดท้าย, โรงงาน ThreadFactory สุดท้าย) {this.monitor = New FilealterationMonitor monitor.setThreadFactory (โรงงาน); } / ** * 添加文件观察器 * @param Observer * / @Override โมฆะสาธารณะ Addobserver (ผู้สังเกตการณ์ FileLateRationObserver) {monitor.addobserver (ผู้สังเกตการณ์); } / ** * 删除文件观察器 * @param Observer * / @Override โมฆะสาธารณะ removeObserver (ผู้สังเกตการณ์ filealterationobserver) {monitor.removeobserver (ผู้สังเกตการณ์); } / ** * 获取注册的所有观察器 * @return * / @Override Public Public Iterable <SelealterationObserver> getObServers () {return monitor.getObServers (); } / ** * 启动监测器 * / @Override เป็นโมฆะสาธารณะเริ่มต้น () {ลอง {monitor.start (); } catch (exception e) {e.printstacktrace (); }} / ** * 停止监测器 * / @Override โมฆะสาธารณะหยุด () {ลอง {monitor.stop (); } catch (exception e) {e.printstacktrace (); }} / ** * 获取监测时间间隔 * / @Override สาธารณะยาว getInterval () {return monitor.getInterval (); -五. 文件观察器
1. 接口: fileobserver.class
นำเข้า java.io.file; นำเข้า org.apache.Commons.io.mon.filealterationListener;/** * 文件观察器角色 */ส่วนต่อประสานสาธารณะ fileobserver {/** * 添加监听器 * @param listener */void addListener / ** * 删除监听器 * @param Listener */ void removeListener (ผู้ฟัง filealterationListener สุดท้าย); / ** * 获取注册的监听器 * @return */ iterable <TelealterationListener> getListeners (); / ** * 初始化观察器 * @throws Exception */ void Initialize () โยนข้อยกเว้น; / ** * 销毁观察器 * @throws Exception */ void destroy () โยนข้อยกเว้น; / ** * 获取观察的目录 * @return */ ไฟล์ getDirectory (); / ** * 获取文件过滤器 * * @return */ public filefilter getFilter ();}2. 实现类: fileobserverimpl.class
นำเข้า java.io.file; นำเข้า java.io.ioException; นำเข้า org.apache.Commons.io.fileutils; นำเข้า org.apache.Commons.io.iocase; นำเข้า org.apache.Commons.io.monitor.fileAleLationListener;当有文件创建、删除、或变更动作时, 则消息通知监听器 */คลาสสาธารณะ FileobServerImpl ขยาย FileAlterationObserver ใช้งาน fileobserver {ส่วนตัวคงที่สุดท้าย Long SerialVersionUID = -7239227289538993830L; / ** * 文件过滤器 */ ตัวกรองไฟล์สุดท้ายของไฟล์สุดท้าย; / ** * 设置要监听观察的目录, 并设置文件过滤器和监听器, 用以观察指定具有指定扩展名的文件 * @param dir 观察监听的目录 * @param ตัวกรอง文件过滤器 * @param listener 文件监听器 */ public fileobserverimpl (สตริง dir, ตัวกรอง filefilter สุดท้าย addListener (ผู้ฟัง); this.filter = ตัวกรอง; ไดเรกทอรีไฟล์ = ไฟล์ใหม่ (dir); // 如果目录不存在 if (! directory.exists ()) {ลอง {fileutils.forcemkdir (ไดเรกทอรี); } catch (ioexception e) {e.printstacktrace (); }} // 如果存在的是文件 else ถ้า (directory.exists () && directory.isfile ()) {ลอง {fileutils.forcedelete (ไดเรกทอรี); fileutils.forcemkdir (ไดเรกทอรี); } catch (ioexception e) {e.printstacktrace (); }}} / ** * 添加监听器 * / @Override โมฆะสาธารณะ AddListener (ผู้ฟัง FileLateRateListener สุดท้าย) {super.addlistener (ผู้ฟัง); } / ** * 移除监听器 * / @Override โมฆะสาธารณะ removeListener (ผู้ฟัง FileLeTerationListener ขั้นสุดท้าย) {super.remoVelistener (ผู้ฟัง); } / ** * 获取观察者对象的所有监听器 * / @Override Public Public Iterable <TelealterationListener> getListeners () {return super.getListeners (); } / ** * 初始化文件观察者 * / @Override โมฆะสาธารณะเริ่มต้น () โยนข้อยกเว้น {super.initialize (); } / ** * 销毁文件观察者 * / @Override โมฆะสาธารณะทำลาย () โยนข้อยกเว้น {super.destroy (); } / ** * 获取所观察的目录 * / @Override ไฟล์สาธารณะ getDirectory () {return super.getDirectory (); } / ** * 获取文件过滤器 * @return * / public filefilter getFilter () {return filter; -六. 文件监听器: filelistener.class
นำเข้า java.io.file; นำเข้า org.apache.commons.io.monitor.filealterationListeneradaptor; นำเข้า org.apache.commons.io.mon.filealterationobserver; /* ** *//public onfileCreate (ไฟล์ไฟล์) {// ทำอะไรบางอย่าง} / ** * 文件删除(转移) 时执行的动作 * / @Override โมฆะสาธารณะ onfiledelete (ไฟล์ไฟล์) {// ทำอะไรบางอย่าง} / ** * 文件内容改变时执行的动作 * / @Override public public Observer) {// ทำอะไรบางอย่าง} / ** * 停止监听时执行的动作 * / @Override โมฆะสาธารณะ onstop (ผู้สังเกต七. 文件过滤器
1. 接口: filefilter.class
/** * 文件过滤器角色, 扩展自 java.io.filefilter */ไฟล์อินเทอร์เฟซสาธารณะขยาย java.io.filefilter {/** * 获取定义的扩展名 * * @return */string [] getextensions ();};2. 实现类: filefilterimpl.class
นำเข้า java.io.file; นำเข้า org.apache.commons.io.filenameutils;/** * 文件过滤器 */คลาสสาธารณะ FileFilterImpl ใช้ filefilter {สตริงส่วนตัว [] ส่วนขยาย; Public FileFilterImpl (สตริง ... ส่วนขยาย) {this.extensions = ส่วนขยาย; } / ** * 是否接受该文件 * / @Override Public Boolean Accept (File PathName) {return filenameutils.isextension (pathName.getName (), ส่วนขยาย); } / ** * 获取定义的扩展名 * @return * / @Override สตริงสาธารณะ [] getExtensions () {return Extensions; -以上这篇 Java 实现文件变化监控的方法 (推荐) 就是小编分享给大家的全部内容了, 希望能给大家一个参考, 也希望大家多多支持武林网。