我有一个程序正在运行,它将日志写入文件,我想逐行读取它。我尝试使用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