我想知道用什么技术和/或库来实现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
}
Run Code Online (Sandbox Code Playgroud)
缺失的部分是合理的实施TailFileReader.它应该能够读取文件打开前存在的文件部分以及添加的行.
根据:
我认为这是可能的,但我有以下问题。
String TailCommand = "tail -f /path/PATH.txt| grep (...)";
Runtime r = Runtime.getRuntime();
Process p = r.exec(TailCommand);
//handle buffer
while (running) {
// handle output
}
Run Code Online (Sandbox Code Playgroud)
进程 p 终止。它适用于不像“top”或“tail -f”那样没有持续更新的命令。
我想知道我是否错过了什么,有一些缓冲区限制还是什么?我正在使用 Eclipse,但我想这应该不会对进程行为产生任何影响。
事实上,也许还有另一种简单的方法可以解决我错过的问题。我使用“tail -f”,因为我必须分析不断附加的非常胖(一些 GB)的日志,并且不打算打开它并读取整个文件。我只需要控制附加行。但是我没有找到合适的尾部实现
提前致谢。