與此問題相關 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