根据the documentation,BufferedReader(Reader)
使用默认缓冲区大小,而第二个构造函数BufferedReader(Reader, int)
允许设置缓冲区大小。
public BufferedReader(Reader in)
创建使用默认大小的输入缓冲区的缓冲字符输入流。
但是,文档并未提及默认缓冲区大小。
BufferedReader的默认缓冲区大小是多少?
默认缓冲区大小为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;
它没有指定。故意。在Sun / Oracle Java JDK中已经有40年了但不依赖它。
我确定 我认为它可能是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
Ans是8 KB。
1024字节* 8 = 8192(8 KB)
参考课程:java.io.BufferedReader
private static int defaultCharBufferSize = 8192;