2013-06-06 20 views
8

Gemäß the documentation verwendet BufferedReader(Reader) eine Standardpuffergröße, während der zweite Konstruktor BufferedReader(Reader, int) die Festlegung der Puffergröße zulässt.BufferedReader Standard-Puffergröße?

public BufferedReader (Reader)

Erstellt eine Pufferung Zeicheneingabestrom, die einen Standardgroßen Eingangspuffer verwendet.

Die Docs erwähnen jedoch nicht die Standardpuffergröße.

Was ist die Standardpuffergröße eines BufferedReader?

+0

[BufferedReader] (http://ulibgcj.sourceforge.net/javadoc/java/io/BufferedReader.html#BufferedReader (java.io.Reader)) könnte Sie interessieren – Smit

+0

@Vulcan EJP gab Ihnen dann eine falsche Antwort. Wie gesagt, ich habe das eigentliche .jar mit BufferedReader extrahiert und habe es mir angesehen. vielleicht war es für einige Jahre anders, oder wird in Zukunft anders sein, aber jetzt ist es strengstens auf 8192 im java.io.BufferedReader spezifiziert !!! – IAM

+0

@Vulcan Android war nur ein Beispiel für die Dokumentation. Der tatsächliche Beweis folgte später. aber da Android auch rt.jar verwendet, ist die Dokumentation transitiv genug. – IAM

Antwort

8

Die Standardpuffergröße 8192 Zeichen

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

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

Neben dieser Dokumentation ist, habe ich die rt.jar Archivierungs- und dekompilierten die BufferedReader.class von java extrahierte .io. * mit JD-GUI, das habe ich in der Klassendefinition gefunden:

private static int defaultCharBufferSize = 8192; 
+1

Sie mögen Recht haben, aber die offiziellen Dokumente sagen das nicht: http://docs.oracle.com/javase/7/docs/api/ – 7stud

+0

@ 7stud Schau dir den Link in meinem Kommentar an. – Smit

+1

@Smit, Zurück bei ya: Werfen Sie einen Blick auf den Orakel-Link in meinem Kommentar. – 7stud

1

Ich bin sicher, Ich denke, es kann system/jvm abhängig sein. Führen Sie dieses Programm:

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

ich:

1.6.0_45 
8192 
+3

Interessant, aber was stellt sicher, dass 'BufferedReader' und' BufferedInputStream' die gleiche Standardpuffergröße haben? – Vulcan

+0

@Vulcan, Guter Punkt. (Stupid BufferedReader-Klasse hat kein Buf-Feld). – 7stud

+0

@ 7stud Was genau ist daran dumm? – EJP

2

Es ist nicht angegeben. Absichtlich. Es ist seit einigen Jahren in den Sun/Oracle Java JDKs 4096, aber verlassen Sie sich nicht darauf.

+0

Es könnte plattformabhängig sein, aber es ist [** 8192 ** auf dem aktuellen Android] (https://github.com/google/j2objc/blob/master/jre_emul/android/libcore/luni/src/main/java/ java/io/BufferedInputStream.java # L44). – pevik

+0

@Pevik Ihr Link ist zu "BufferedInputStream", und die Frage ist über 'BufferedReader'. – EJP