首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java "tail -f“包装器

Java "tail -f“包装器
EN

Stack Overflow用户
提问于 2009-06-12 18:44:19
回答 6查看 5.5K关注 0票数 3

我需要将Unix命令"tail -f“包装在一个BufferedInputStream中。我不想模拟或模仿this question所说的尾巴。相反,我想使用tail,等待它给我一个新的行。

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2009-06-12 18:55:08

最好的方法是使用Process类并使用Scanner读取

代码语言:javascript
复制
Runtime r = Runtime.getRuntime()
Process p = r.exec("tail -f")
Scanner s = new Scanner(p.getInputStream())
while (s.hasNextLine()) {
    String line = s.nextLine()
    // Do whatever you want with the output.
}

hasNextLine()应该会阻塞,因为它正在等待来自输入流的更多输入,这样您就不会忙于等待数据的到来。

票数 14
EN

Stack Overflow用户

发布于 2009-06-12 18:47:17

看看Runtime.exec(字符串命令)。返回具有输入流和输出流的Process对象。

票数 1
EN

Stack Overflow用户

发布于 2009-06-12 19:44:26

另请检查ProcessBuilder

代码语言:javascript
复制
Process tail = new ProcessBuilder("tail", "-f", file).start();
BufferedInputStream bis = new BufferedInputStream(tail.getInputStream())

其中,日志是类似“/var/ file /messages”的字符串。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/988327

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档