本文介绍了Java + Eclipse:同步标准输出和标准错误的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我使用 Eclipse.当我有这样的应用程序时:
I use Eclipse. When I have an application like this:
write 20 times 'Hello World
' to stdout
write 'ERROR
' to stderr
write 5 times 'Hello World
' to stdout
输出多次看起来像这样:
The output looks many times like this:
Hello World
Hello World
Hello World
Hello World
Hello World
Hello World
...
Hello World
Hello World
Hello World
ERROR
有没有办法同步这两个输出流?当然不需要在 20 次 Hello World
块后等待几毫秒,在打印 ERROR
后等待几毫秒.
Is there a way to synchronize these two output streams? Of course without waiting a few milliseconds after the block of 20 times Hello World
and waiting a few milliseconds after printing ERROR
.
推荐答案
信不信由你,冲洗在这里不是解决方案......
如果流导致由底层操作系统提供的抽象"(例如磁盘驱动器或控制台),则剩余字节将传递给操作系统进行写入;它不保证它们确实被写入......."(请参阅 OutputStream 文档).这里的关键是,如果操作系统愿意,它可以以不同的顺序处理来自不同流的刷新.
Believe it or not, flushing is not a solution here....
我刚刚在我的程序中发生了这种情况.我在两条正常消息之间出现了一条错误消息,这两条消息在错误消息出现之前都已刷新.
所以问题仍然存在,有没有一种内置的方式来同步两个流?还是我们必须手动处理?
这篇关于Java + Eclipse:同步标准输出和标准错误的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!