【发布时间】:2015-01-08 01:23:37
【问题描述】:
我阅读了这个问题Using flush() before close(),并且接受的答案是这仅意味着您遵循模式。
就像 BufferedWriter#close() 或 FilterOutputStream.#close() 一样,如果所有缓冲的 Stream/Writer 在我们调用 close() 时都会调用它的 flush() 并且如果我们(开发人员和将审查代码的开发人员)都知道那,我们真的还需要这个吗?如果是,是什么原因?
【问题讨论】:
-
IMO,你没有,但这并不意味着这是一个好主意 :-) 如果你从 Writer 或 OutputStream 实现切换,如果你不刷新那些你可能会遇到意外的行为需要它。你可能会争辩说,有一些无用的 flush()'es 是一个糟糕的 JVM 设计,那么我的回答是“也许”:-) 我们可能研究的另一件事是关于向后兼容性,如果以前版本的 JVM 在没有冲洗()。
-
您到底在问什么,您所链接的问题未涵盖哪些内容?
-
@jarnbjo,我只需要知道这是否只是一项闲置的工作,除非这只是明确遵守规则?
-
@Leo,您能否在答案中给我们举个例子,如果我们先切换到没有 muanlly flush() 的 OutputStream 会出现什么意外行为?
-
@Jaskey 可能是在其他库中实现的其他类,这些库扩展了 OutputStream 但不遵循这种“关闭时刷新”的合同,这在任何地方都没有说明? :-)
标签: java io bufferedwriter writer steam