Java捕杀文件变化方法(转)
Java捕捉文件变化方法(转)
import java.io.File; import java.io.FileNotFoundException; import java.io.IOException; import java.io.RandomAccessFile; import java.util.concurrent.TimeUnit; import org.apache.commons.io.filefilter.FileFilterUtils; import org.apache.commons.io.monitor.FileAlterationListenerAdaptor; import org.apache.commons.io.monitor.FileAlterationMonitor; import org.apache.commons.io.monitor.FileAlterationObserver; public class FileMonitorTest { static long pos = 0; public static void main(String[] args) throws Exception { // 监控目录 String rootDir = "E:\\"; // 轮询间隔 5 秒 long interval = TimeUnit.SECONDS.toMillis(5); // FileAlterationObserver observer = new FileAlterationObserver(rootDir, FileFilterUtils.and( FileFilterUtils.fileFileFilter(), FileFilterUtils.suffixFileFilter(".java")), null); observer.addListener(new MyFileListener()); FileAlterationMonitor monitor = new FileAlterationMonitor(interval, observer); // 开始监控 monitor.start(); } } class MyFileListener extends FileAlterationListenerAdaptor { @Override public void onFileCreate(File file) { System.out.println("[新建]:" + file.getAbsolutePath()); } @Override public void onFileChange(File file) { System.out.println("[修改]:" + file.getAbsolutePath()); try { RandomAccessFile random = new RandomAccessFile(file, "r"); if (FileMonitorTest.pos == 0) { FileMonitorTest.pos = random.length(); } random.seek(FileMonitorTest.pos); String line; while((line = random.readLine()) != null) { System.out.println(line); } FileMonitorTest.pos = random.getFilePointer(); random.close(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } @Override public void onFileDelete(File file) { System.out.println("[删除]:" + file.getAbsolutePath()); } }
1 楼
ddwla4
31 分钟前
谢谢。分享