Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.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 当我';我已经做完了,还是已经够近了?_Java_Io - Fatal编程技术网

Java 当我';我已经做完了,还是已经够近了?

Java 当我';我已经做完了,还是已经够近了?,java,io,Java,Io,使用完BufferedWriter后,我知道应该调用writer.close()。但是我是否也应该调用writer.flush()?还是没有必要 另外,如果我在包含流和IO代码实例化的try块内部或外部执行此操作,是否有关系?Close将自动刷新流,因此您不必在关闭时刷新流。当你正在写一个流时,刷新是有用的,并且想把中间值推到文件/输出流,这样如果程序崩溃,数据就不会丢失。 在Java7和更高版本中,您可以使用来避免编写清理流的清理代码 try with resources语句是声明一个或多个资

使用完BufferedWriter后,我知道应该调用
writer.close()
。但是我是否也应该调用
writer.flush()
?还是没有必要


另外,如果我在包含流和IO代码实例化的
try
块内部或外部执行此操作,是否有关系?

Close将自动刷新流,因此您不必在关闭时刷新流。当你正在写一个流时,刷新是有用的,并且想把中间值推到文件/输出流,这样如果程序崩溃,数据就不会丢失。 在Java7和更高版本中,您可以使用来避免编写清理流的清理代码

try with resources语句是声明一个或多个资源的try语句。资源是一个必须在程序完成后关闭的对象。try with resources语句确保在语句末尾关闭每个资源


Methode close()将调用(f)flush()automatic

根据我的经验,您应该仅在希望/需要确保当前数据必须写入流时调用
flush
。当您处理小文件时,您只需直接调用
close
,因为这已经在写入文件流之前触发了文件流刷新。但是,当您处理较大的文件时,例如具有100万行或更多行的文件,则最好不时调用
flush
(例如,在写入10k行之后),以便写入磁盘并简化
close
调用的最终
flush
。这可以在程序崩溃的情况下完成。

@反斜杠你是对的,我指的是writer。请看我在包含IO代码和writer/reader实例化的
try
块的内部或外部调用writer/reader.close()是否重要?如果你使用的是JDK 7和aboe,请使用try with resource,这将节省您编写清理/关闭流的代码的工作量。谢谢,但无论如何,您能回答我的最后一个问题吗?理想情况下,流应该在finally块中关闭,这样即使出现一些异常,它也会在finally块中关闭。