12

如果这是重复的,我很抱歉,但我无法找到每种类型的最佳实践的明确答案。

我想知道定义何时使用 BufferedReader 与 FileReader 或 BufferedInput/OutputStream 与 FileInput/OutputStream 的适当条件是什么?是否有某种公式总能告诉你什么是合适的?

我应该总是使用缓冲吗?

谢谢

4

5 回答 5

15

如果流将有很多小访问,请使用缓冲区。如果您要进行相对较少、相对较大的访问,请使用无缓冲。

于 2009-07-06T18:43:07.320 回答
4

唯一应该使用无缓冲 I/O 的情况是缓冲带来的延迟和聚合不适用于您的应用程序。

于 2009-07-06T18:43:38.710 回答
3

“有没有什么公式总能告诉你什么是合适的?”

如果有,它已经在库中,并且不是您必须做出的设计决定。

由于没有简单的答案,您必须做出设计决定,您必须实际考虑它。

或者,您可以尝试这两个选项,并根据您的独特问题和独特标准查看哪个“更好”。

大多数标准 I/O 库都是缓冲的。这暗示了大多数 I/O 受益于缓冲。但不是所有的。例如,游戏需要对游戏控件进行无缓冲访问。

于 2009-07-06T18:46:51.760 回答
2

还要记住,它BufferedReader为您提供了一种方便的readLine()方法,允许您一次阅读一行内容。

于 2009-07-06T18:47:52.087 回答
1

我建议您使用 Buffered* 如果这可以让您的应用程序运行得更快,否则我不会打扰它。即用真实的数据试试看它是否有帮助。

于 2009-07-07T05:50:39.463 回答