Java 为什么我们使用system.out.flush()?
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/19183955/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
why we use system.out.flush()?
提问by Ali Kashanchi
Can someone please explain why we we would use system.out.flush()
in a simpler way? If there could be a chance of losing data, please provide me with an example. If you comment it in the code below nothing changes!
有人可以解释为什么我们会system.out.flush()
以更简单的方式使用吗?如果可能会丢失数据,请提供一个示例。如果您在下面的代码中对其进行注释,则没有任何变化!
class ReverseApp{
public static void main(String[] args) throws IOException{
String input, output;
while(true){
System.out.print("Enter a string: ");
System.out.flush();
input = getString(); // read a string from kbd
if( input.equals("") ) // quit if [Enter]
break;
// make a Reverser
Reverser theReverser = new Reverser(input);
output = theReverser.doRev(); // use it
System.out.println("Reversed: " + output);
}
}
}
Thank you
谢谢
采纳答案by SegFault
When you write data out to a stream, some amount of buffering will occur, and you never know for sure exactly when the last of the data will actually be sent. You might perform many operations on a stream before closing it, and invoking the flush() method guarantees that the last of the data you thought you had already written actually gets out to the file.
当您将数据写入流时,会发生一定量的缓冲,并且您永远无法确切知道最后一个数据何时实际发送。您可能会在关闭流之前对它执行许多操作,并且调用 flush() 方法可确保您认为已经写入的最后一个数据实际上已到达文件中。
Extract from Sun Certified Programmer for Java 6 Exam by Sierra & Bates.
摘自Sierra & Bates 的 Sun 认证程序员 Java 6 考试。
In your example, it doesn't change anything because System.out
performs auto-flushing meaning that everytime a byte in written in the buffer, it is automatically flushed.
在您的示例中,它不会更改任何内容,因为System.out
执行自动刷新意味着每次写入缓冲区的字节都会自动刷新。
回答by Rogue
You use System.out.flush() to write any data stored in the out buffer. Buffers store text up to a point and then write when full. If you terminate a program without flushing a buffer, you could potentially lose data.
您使用 System.out.flush() 写入存储在输出缓冲区中的任何数据。缓冲区将文本存储到一个点,然后在满时写入。如果在不刷新缓冲区的情况下终止程序,则可能会丢失数据。
回答by Anton Dozortsev
Here is what the say documentation.
这就是说文档的内容。