java 监听资料修改
java 监听文件修改
原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://blog.****.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; } } } }