与此问题相关 Java writing to a deleted file 只在我的情况下我正在读取。并根据该评论,是的,Windows块删除和Unix不。并在unix下从来没有抛出任何IOException如何检测文件已从br.readline()循环内删除
该代码是一个穷人的tail -f
,其中我有一个java线程正在看目录中的每个日志文件。我目前的问题是如果文件被删除,我没有处理它。我需要放弃并开始一个新的线程或其他东西。我甚至没有意识到这是一个问题,因为下面的代码抛出Unix下也不例外
代码
BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(f)));
String line = null;
while (true) {
try {
line = br.readLine();
// will return null if no lines added
} catch (IOException e) {
e.printStackTrace();
}
if (line == null) {
// sleep if no new lines added to file
Thread.sleep(1000);
} else {
// line is not null, process line
}
}
明天我会尝试在睡觉前增加这个检查,也许是足够
if (!f.exists()) {
// file gone, aborting this thread
return;
}
任何人有其他想法?
有趣的新东西。新的1.7似乎 – 2012-07-06 02:36:39