4

如何确定缓冲区的大小,同时使用缓冲输入流读取批量文件?它是基于文件大小吗?我正在使用,

byte[] buf = new byte[4096];

如果我增加缓冲区大小,它会快速读取吗?

4

3 回答 3

10

故意未记录的默认值为 8192 字节。除非你有一个令人信服的理由来改变它,否则不要改变它。

于 2013-10-24T08:52:10.693 回答
2

您可以轻松地自己测试它,但这并不是一个大问题。几千字节的缓冲区就足够了,因此您将获得良好的阅读速度。

如果您分析您的应用程序并意识到文件 IO 是性能瓶颈,那么有一些方法可以使其更快,例如内存映射文件。

于 2013-10-24T08:49:18.930 回答
0

您在那里显示的是您正在读入(数组)的“字节大小”。

如果您正在从 FileInputStream 读取(即非缓冲),那么更改该大小将更改读取大小,是的。

这与 BufferedInputStream 使用的内部缓冲区不同。它没有getter,但您可以在构造函数中指定大小并从中“记住”我想。默认为 8K,这可能不是最佳的。

于 2021-08-06T18:54:31.057 回答