在我使用BufferedWriter完成后,我知道我应该调用writer.close()
。但我还应该致电writer.flush()
吗?还是没必要?
另外,如果我在包含流实例化和IO代码的try
块内部执行此操作,还是在其外部?
答案 0 :(得分:3)
关闭会自动刷新你的流,所以你不必在关闭时刷新流。当您正在写入流并希望将中间值推送到文件/输出流时,Flush非常有用,这样如果程序崩溃,数据就不会丢失。
从Java 7及更高版本开始,您可以使用try-with-resources来避免编写用于清理流的清理代码。
try-with-resources语句是一个声明一个或多个资源的try语句。资源是在程序完成后必须关闭的对象。 try-with-resources语句确保在语句结束时关闭每个资源。
答案 1 :(得分:2)
根据我的经验,只有当您需要/需要确保必须在流中写入当前数据时,才应调用flush
。使用小文件时,您只需直接调用close
,因为在写入之前已经触发了文件流上的刷新。但是当你处理更大的文件时,例如一个拥有100万行或更多行的文件,那么不时更好地调用flush
(例如在写入10k行之后),以便写入磁盘并简化flush
调用{ {1}}。这可以在程序崩溃的情况下完成。
答案 2 :(得分:1)
方法close()将调用(f)flush()自动