Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/313.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 我需要显式地使用flush()方法吗?_Java_Flush - Fatal编程技术网

Java 我需要显式地使用flush()方法吗?

Java 我需要显式地使用flush()方法吗?,java,flush,Java,Flush,我是否需要在那里显式地writer.flush()?我认为在离开save()方法writer后,可能无法将数据写入outputStream import java.io.*; 公开课考试 { 公共int i=5; public void save(OutputStream OutputStream)引发异常 { PrintWriter writer=新的PrintWriter(outputStream); 作者:println(i); writer.flush();//是否必须? } } 来自f

我是否需要在那里显式地
writer.flush()
?我认为在离开
save()
方法
writer
后,可能无法将数据写入
outputStream

import java.io.*;
公开课考试
{
公共int i=5;
public void save(OutputStream OutputStream)引发异常
{
PrintWriter writer=新的PrintWriter(outputStream);
作者:println(i);
writer.flush();//是否必须?
}
}

来自
flush
文档:

/**
*冲过小溪。如果流已从中保存任何字符
*在缓冲区中的各种write()方法,立即将它们写入
*预定目的地。然后,如果该目的地是另一个字符或
*字节流,刷新它。因此,一次flush()调用将刷新所有
*写入程序和输出流链中的缓冲区。
*
*如果此流的预期目的地是提供的抽象
*通过底层操作系统,例如文件,然后刷新
*流只保证以前写入流的字节是
*传递给操作系统进行写入;这并不能保证
*它们实际上被写入到物理设备,如磁盘驱动器。
*
*@抛出java.io.IOException
*如果发生I/O错误
*/
因此,如果需要保证将字节写入下一个流,请调用它

请查看
checkError
,根据其文档:


如果您稍后在某个点关闭输出流,则不会这样做。这只是您希望何时将数据刷新到输出流的问题。正如达尼奥指出的那样,关闭PrintWriter也会刷新它。您将需要在程序中的某个点以某种方式刷新它,否则无法保证数据将进入输出流,但在看不到其余代码的情况下,很难说您是否需要该特定行。我知道如果关闭外部流,内部流也将关闭,并且知道如果不刷新()或close()将不保存外部流数据。但我不知道PrintWriter/BufferedWriter或其他外部流是否会立即将数据发送到内部流。例如,如果不使用close()或flush()函数,PrintWriter会包含我发送给它的数据,并在离开save()函数后丢失数据,而不将数据发送到内部流吗?您也可以使用CTOR
PrintWriter writer=new PrintWriter(outputStream,true)。true标志用于自动刷新。每次调用任何println()方法或使用其中一个format()方法时,都会检查并执行自动刷新。它们调用内部的newLine()方法,在该方法中,autoflush将检查并执行。看看PrintWriter的源代码,在那里你可以看到它的行为。最好下载Java源代码包并将其链接到IDE中,这样您就可以轻松直接地访问它。
* Flushes the stream if it's not closed and checks its error state.