从Java
7开始,FileSystem类上有了newWatchService()方法。
但是,有一些警告:
- 只有Java 7
- 这是一种可选方法
- 它只监视目录,因此您必须自己处理文件,并担心文件移动等
在Java 7之前,无法使用标准API。
我尝试了以下 *** 作(以1秒的间隔进行轮询),并且可以正常工作(仅在处理过程中打印):
private static void monitorFile(File file) throws IOException { final int POLL_INTERVAL = 1000; FileReader reader = new FileReader(file); BufferedReader buffered = new BufferedReader(reader); try { while(true) { String line = buffered.readLine(); if(line == null) { // end of file, start polling Thread.sleep(POLL_INTERVAL); } else { System.out.println(line); } } } catch(InterruptedException ex) { ex.printStackTrace(); } }
正如没有人建议使用当前生产的Java的解决方案一样,我想我会添加它。如果存在缺陷,请添加注释。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)