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;
			}
		}
	}
}

你可能感兴趣的:(Java,基础,java,file,timer,string,class)