BufferedReader default buffer size?

前端 未结 4 1455
忘掉有多难
忘掉有多难 2021-01-02 05:27

According to the documentation, BufferedReader(Reader) uses a default buffer size, while the second constructor, BufferedReader(Reader, int) allows

相关标签:
4条回答
  • 2021-01-02 05:45

    It isn't specified. On purpose. It's been 4096 for some years in the Sun/Oracle Java JDKs but don't rely on it.

    0 讨论(0)
  • 2021-01-02 05:51

    Ans is 8 KB.

    1024 bytes * 8 = 8192 (8 KB)
    refer class : java.io.BufferedReader

    private static int defaultCharBufferSize = 8192;
    
    0 讨论(0)
  • 2021-01-02 05:59

    The default buffer size is 8192 characters

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

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

    Besides this documentation, I've extraced the rt.jar archive, and decompiled the BufferedReader.class from java.io.* using JD-GUI, this is what I found in the class definition:

    private static int defaultCharBufferSize = 8192;
    
    0 讨论(0)
  • 2021-01-02 06:00

    I'm sure I think it may be system/jvm dependent. Run this program:

    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;
        }
    }
    

    I get:

    1.6.0_45
    8192
    
    0 讨论(0)
提交回复
热议问题