我可以使用System.setOut(...)
将输出重定向到文件或其他输出流,但是如果这样做:
System.out.print("\rTesting")
System.out.print("\rHello world!")
然后在终端上,我只会看到“ Hello world!”最后,但是如果我写入文件,则会打印所有字符,而我只想获取“ Hello world!”
我可以编写一个自定义的OutputStream来执行此操作,但是我想处理与终端相同的事情,例如处理诸如“ \ 033 [2K”“之类的奇怪转义序列。我尝试使用cat
,echo
和tee
,并重定向到文件,但是所有这些都为我提供了完整的字符序列。
平台特定的解决方案很好(尽管理想情况下,它至少可以在任何合理的Linux发行版上运行)。我什至可以使用bash命令或能让我做到这一点的东西。
答案 0 :(得分:0)
这里发生的事情是您使用CR(\ r)而不是LF(\ n)。在您的情况下,这意味着您先打印第1行,然后一直跳到最左边,但不要跳下一行,结果是您的第一行消失在第二行之后