import java.io.File; import java.text.SimpleDateFormat; import java.util.Timer; import java.util.TimerTask; public class FileListener { public static void main(String[] args) { FileListener fileListener = new FileListener(); fileListener.timer = new Timer(true); fileListener.start(); } private Timer timer; private long currentTime = -1; private long lastModifiedTime = -1; private long times = 1; private long pollingInterval = 1000 * times; private String filePath = "c:\\test.txt"; public FileListener() { File file = new File(filePath); lastModifiedTime = file.lastModified(); currentTime = lastModifiedTime; } 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 (Exception 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) {//1439540671443 String string = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss SSS") .format(lastModifiedTime);//1439540994156 System.out.println("File changed At:" + string); currentTime = lastModifiedTime; } } } }