如何获得Java程序的输出,就像它在终端上运行一样?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (1)
  • 关注 (0)
  • 查看 (17)

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

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

然后在终端上我会看到“Hello world!” 最后,但如果我写一个文件,我会打印所有的字符,我只想得到“Hello world!”

我可以编写一个自定义的OutputStream,但我想处理与终端相同的事情,比如处理奇怪的转义序列,如“\ 033 [2K”。我尝试过使用catechotee,并重定向到一个文件,但这一切都给了我完整的字符序列。

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

提问于
用户回答回答于

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

扫码关注云+社区

领取腾讯云代金券