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

回到顶部