如何像在终端上运行一样准确地获取Java程序的输出?

时间:2018-06-30 11:53:10

标签: java bash terminal

我可以使用System.setOut(...)将输出重定向到文件或其他输出流,但是如果这样做:

System.out.print("\rTesting")
System.out.print("\rHello world!")

然后在终端上,我只会看到“ Hello world!”最后,但是如果我写入文件,则会打印所有字符,而我只想获取“ Hello world!”

我可以编写一个自定义的OutputStream来执行此操作,但是我想处理与终端相同的事情,例如处理诸如“ \ 033 [2K”“之类的奇怪转义序列。我尝试使用catechotee,并重定向到文件,但是所有这些都为我提供了完整的字符序列。

平台特定的解决方案很好(尽管理想情况下,它至少可以在任何合理的Linux发行版上运行)。我什至可以使用bash命令或能让我做到这一点的东西。

1 个答案:

答案 0 :(得分:0)

这里发生的事情是您使用CR(\ r)而不是LF(\ n)。在您的情况下,这意味着您先打印第1行,然后一直跳到最左边,但不要跳下一行,结果是您的第一行消失在第二行之后