猿问

Unix/Linux“tail-f”的Java IO实现

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..它应该能够读取文件打开前存在的部分文件以及添加的行。


繁花不似锦
浏览 552回答 3
3回答

沧海一幻觉

能够继续读取文件,并等待文件有更多的更新为您自己应该是不难做到的。下面是一些伪代码: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     }}我假设您希望将这种类型的功能放在自己的线程中,这样您就可以休眠它,而不会影响应用程序的任何其他领域。你会想暴露keepReading在setter中,这样应用程序的主类/其他部分就可以安全地关闭线程,而不会引起任何其他麻烦,只需调用stopReading()或者类似的东西。

MYYA

的ApacheCommonsImplementation尾矿班级,等级。它似乎也处理日志旋转。
随时随地看视频慕课网APP

相关分类

Java
我要回答