我有一個程序正在運行,它將日誌寫入文件,我想逐行讀取它。我嘗試使用InputStream
,特別是DataInputStream
,使用其可用的方法。但它沒有readLine
方法,它已被棄用,並建議將其包裝在BufferedReader
中以使用readLine
。但是,當我使用BufferedReader
它不讀取所有行,它通過讀取一行停下來。在java中讀取當前正在寫入的日誌文件
public void read(DataInputStream ins) {
try {
while(true) {
if(ins.available() > 0) {
//BufferedReader reader = new BufferedReader(new InputStreamReader(ins));
//System.out.println(reader.readLine());
System.out.println(ins.readLine());
}
else {
Thread.sleep(200);
}
}
}
catch(Exception e) {
e.printStackTrace();
}
}
所以,代碼工作與ins.readLine()
,但它已被棄用,並根據Java文檔使用它BufferedReade
r表示。但與reader.readLine()
它不工作,因爲我期望。
另外,有什麼其他更好的java方式來做到這一點,因爲我相信這是一些標準問題。我讀了關於拖車類的地方。但無法測試。
什麼不按預期工作? – NINCOMPOOP
當我使用reader.readLine()時,它只讀取第一行 – r0b0
不使用'ävailable()'方法,這是沒用的。 InputStreams不會讀取持續更新的文件。一旦他們到達流結束,他們將停止返回結果,即使底層文件更新。 – jtahlborn