2013-06-06 35 views
8

Theo the documentation, BufferedReader(Reader) sử dụng kích thước bộ đệm mặc định, trong khi hàm tạo thứ hai, BufferedReader(Reader, int) cho phép đặt kích thước bộ đệm.BufferedReader mặc định kích thước bộ đệm?

BufferedReader công cộng (Reader)

Tạo một đệm dòng ký tự đầu vào đó sử dụng một bộ đệm đầu vào mặc định kích thước.

Tuy nhiên, tài liệu không đề cập đến kích thước bộ đệm mặc định là gì.

Kích thước bộ đệm mặc định của BufferedReader là gì?

+0

[BufferedReader] (http://ulibgcj.sourceforge.net/javadoc/java/io/BufferedReader.html#BufferedReader (java.io.Reader)) có thể bạn quan tâm – Smit

+0

@Vulcan EJP đã cho bạn câu trả lời sai rồi. như đã nói tôi đã extraced .jar thực sự chứa BufferedReader và đã xem xét nó. có lẽ đó là một cách khác trong một vài năm, hoặc sẽ là một cách khác trong tương lai, nhưng bây giờ nó được quy định cụ thể đến 8192 trong java.io.BufferedReader !!! – IAM

+0

@Vulcan android là một ví dụ về tài liệu. bằng chứng thực tế được theo sau. nhưng kể từ khi android cũng sử dụng rt.jar, quá nhiều tài liệu là đủ. – IAM

Trả lời

8

Kích thước bộ đệm mặc định là 8192 ký tự

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

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

Bên cạnh đó tài liệu này, tôi đã extraced các kho lưu trữ rt.jar, và phân tích với BufferedReader.class từ java .io. * sử dụng JD-GUI, đây là những gì tôi tìm thấy trong định nghĩa lớp học:

private static int defaultCharBufferSize = 8192; 
+1

Bạn có thể đúng, nhưng các tài liệu chính thức không nói rằng: http://docs.oracle.com/javase/7/docs/api/ – 7stud

+0

@ 7stud Hãy xem liên kết được đưa ra trong nhận xét của tôi. – Smit

+1

@Smit, Quay lại ya: hãy xem liên kết oracle trong bình luận của tôi. – 7stud

1

Tôi chắc chắn Tôi nghĩ rằng nó có thể phụ thuộc vào hệ thống/jvm. Chạy chương trình này:

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

tôi nhận được:

1.6.0_45 
8192 
+3

Thú vị, nhưng điều gì đảm bảo rằng 'BufferedReader' và' BufferedInputStream' có cùng kích thước bộ đệm mặc định? – Vulcan

+0

@Vulcan, Tốt. (Stupid BufferedReader lớp không có một lĩnh vực buf). – 7stud

+0

@ 7stud Chính xác điều gì là ngu ngốc về điều đó? – EJP

2

Nó không được chỉ định. Về mục đích. Nó được 4096 cho một số năm trong JDK Java Sun/Oracle nhưng không dựa vào nó.

+0

Có thể phụ thuộc vào nền tảng, nhưng đó là [** 8192 ** trên Android hiện tại] (https://github.com/google/j2objc/blob/master/jre_emul/android/libcore/luni/src/main/java/ java/io/BufferedInputStream.java # L44). – pevik

+0

@Pevik Liên kết của bạn là 'BufferedInputStream' và câu hỏi là về' BufferedReader'. – EJP

Các vấn đề liên quan