java 监听文件修改
原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://blog.csdn.net/love254443233/article/details/7972525
在网上找了很多有关java监听文件修改的资料,很多都做得太复杂了;而且用到本地都有问题。这里自己写一个简单的监听文件修改的方法,代码如下:
package com.yunho.rule;import java.text.SimpleDateFormat;import java.util.*;import java.io.File;import java.io.IOException;public class FileListener{/** * A facility for threads to schedule tasks for future execution in a background thread. * Tasks may be scheduled for one-time execution, or for repeated execution at regular intervals. * */private Timer timer;/** * current time * */private long currentTime=-1;/** * last Modified Time * */private long lastModifiedTime=-1;/** * 分钟 * */private long times=1;/** * time * */private long pollingInterval=1000 * times;/** * file path * */private String filePath="src/com/yunho/rule/rule.xml";public FileListener() {File file=new File(filePath);lastModifiedTime=file.lastModified();currentTime=lastModifiedTime;}public static void main(String[] args) {FileListener fileListener=new FileListener();fileListener.timer = new Timer(true);fileListener.start();}public void start(){timer.schedule(new FileMonitor(), 0, pollingInterval); while (true) {try {int ch = System.in.read();System.out.println("ch = "+ch);if (ch - 'c' == 0) {System.out.println("QUIT");timer.cancel();break;}} catch (IOException e) {e.printStackTrace();}}}private class FileMonitor extends TimerTask {public void run() {File file = new File(filePath);lastModifiedTime = file.exists() ? file.lastModified() : -1;if (currentTime != lastModifiedTime) {System.out.println(" File [ " + file.getName() + " ] changed At: "+ new SimpleDateFormat("yyyy-MM-dd HH:mm:ss SSS").format(lastModifiedTime));currentTime = lastModifiedTime;}}}}