10

根据文档BufferedReader(Reader)使用默认缓冲区大小,而第二个构造函数BufferedReader(Reader, int)允许设置缓冲区大小。

public BufferedReader(Reader in)

创建一个使用默认大小的输入缓冲区的缓冲字符输入流。

但是,文档没有提到默认缓冲区大小是多少。

BufferedReader 的默认缓冲区大小是多少?

4

4 回答 4

10

默认缓冲区大小为 8192 个字符

http://developer.android.com/reference/java/io/BufferedReader.html

 BufferedReader(Reader in)
Constructs a new BufferedReader, providing in with a buffer of 8192 characters.

除了这个文档,我还提取了 rt.jar 存档,并使用JD-GUI从 java.io.* 反编译了 BufferedReader.class ,这是我在类定义中找到的:

private static int defaultCharBufferSize = 8192;
于 2013-06-06T23:26:39.283 回答
2

它没有指定。故意。Sun/Oracle Java JDK 中的 4096 已经有好几年了,但不要依赖它。

于 2013-06-07T02:20:21.557 回答
1

我确定我认为它可能依赖于系统/jvm。运行这个程序:

java.io.BufferedInputStream 在旧的和异国情调的 JVM 上的默认缓冲区大小是多少?

import java.io.BufferedInputStream;
import java.io.InputStream;

public class BufferSizeDetector extends BufferedInputStream {
    public static void main(String[] args) {
        BufferSizeDetector bsd = new BufferSizeDetector(null);

        System.err.println(System.getProperty("java.version"));
        System.err.println(bsd.getBufferSize());
    }

    public BufferSizeDetector(InputStream in) {
        super(in);
    }

    public int getBufferSize() {
        return super.buf.length;
    }
}

我得到:

1.6.0_45
8192
于 2013-06-06T23:29:44.047 回答
0

答案是 8 KB。

1024 字节 * 8 = 8192 (8 KB)
参考类: java.io.BufferedReader

private static int defaultCharBufferSize = 8192;
于 2019-03-18T12:17:35.083 回答