有人可以解释为什么我们会以更简单的方式使用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);
}
}
}
谢谢
答案 0 :(得分:7)
当您将数据写入流时,会发生一定量的缓冲,并且您无法确切知道何时实际发送最后一个数据。你可能会执行很多 在关闭它之前对流进行操作,并调用flush()方法可以保证您认为已经编写的最后一个数据实际上已经存入文件。
摘自Sun Certified Programmer for Java 6 Exam by Sierra & Bates。
在您的示例中,它不会更改任何内容,因为System.out
执行自动刷新意味着每次在缓冲区中写入一个字节时,它都会自动刷新。
答案 1 :(得分:3)
使用System.out.flush()写入存储在out缓冲区中的任何数据。缓冲区将文本存储到一个点,然后在满时写入。如果在不刷新缓冲区的情况下终止程序,则可能会丢失数据。
答案 2 :(得分:2)
这就是说documentation。