BufferedReader默认缓冲区大小?

时间:2013-06-06 23:23:55

标签: java buffer bufferedreader

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

  

public BufferedReader(Reader in)

     

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

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

BufferedReader的默认缓冲区大小是什么?

4 个答案:

答案 0 :(得分: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;

答案 1 :(得分:2)

未指定。故意。在Sun / Oracle Java JDK中已经有40年了但不依赖它。

答案 2 :(得分:1)

我确定我认为它可能依赖于system / jvm。运行此程序:

What are the default buffer size for java.io.BufferedInputStream on old and exotic JVMs?

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

答案 3 :(得分:0)

答案是8 KB。

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

private static int defaultCharBufferSize = 8192;