Java Unix / Linux“ tail -f”的Java IO实现
我想知道使用什么技术和/或库来实现linux命令“ tail -f
”的功能。我本质上是在寻找的附加组件/替代产品java.io.FileReader
。客户端代码可能如下所示:
TailFileReader lft = new TailFileReader("application.log");BufferedReader br = new BufferedReader(lft);
String line;
try {
while (true) {
line= br.readLine();
// do something interesting with line
}
} catch (IOException e) {
// barf
}
缺少的部分是的合理实现TailFileReader
。它应该能够读取文件打开之前存在的部分以及添加的行。
回答:
能够继续读取文件,并等待文件有更多更新的能力,自己编写代码并不难。这是一些伪代码:
BufferedReader br = new BufferedReader(...);String line;
while (keepReading) {
line = reader.readLine();
if (line == null) {
//wait until there is more of the file for us to read
Thread.sleep(1000);
}
else {
//do something interesting with the line
}
}
我假设你希望将这种功能放在其自己的线程中,以便可以使其hibernate而不影响应用程序的任何其他区域。你可能希望公开keepReading
一个setter
,以便你的主类/应用程序的其他部分可以安全地关闭线程而不会造成其他麻烦,只需调用stopReading()
或类似方法即可。
以上是 Java Unix / Linux“ tail -f”的Java IO实现 的全部内容, 来源链接: utcz.com/qa/420109.html