BufferedReader Limit?

Conners

Erfahrenes Mitglied
Hi,

ich bin gerade dabei einen Parser zu schreiben. Bei Inhalten kleiner 10000 Byte funktioniert alles wunderbei, bei größeren Inhalten schneidet der bei ~ 10050 Byte immer ab.

Hier meine Funktion:

Code:
...
HttpURLConnection myConnection = (HttpURLConnection)url.openConnection();
myConnection.setRequestMethod("GET");
...
InputStream in = myConnection.getInputStream();
InputStreamReader isr = new InputStreamReader(in, "UTF-8");
BufferedReader bufferedReader = new BufferedReader(isr, size);
StringBuilder stringBuilder = new stringBuilder();
...
String tmp;
while ((tmp=bufferedReader.readLine()) != null){
stringBuilder.append(line+"\n");
}
in.close();
myConnection.disconnect();
String myString = stringBuilder.toString();
...

Weiß jemand wodran das liegt?

Gruß
Conners
 
Moin Conners,

das Einzige, was mir spontan dazu einfällt:

Welchen Wert hat denn Deine VAR size ?
Die müsste doch die Größe der eingelesenen Daten festlegen, oder?

Gruß
Klaus
 
Ah sry, mit "size" hab ich nur rumgespielt. Die Variable hatte keinerlei Einfluss auf das Ergebnis, was mich selbst verwundert hat.

Ich hab gerade ne 2. Lösung gebaut, ohne BufferedReader und InputStreamReader, aber da passierte exakt das gleiche.

Mein Wiresharktrace verrät mir, dass die Antwort als ganzes ankommt, auch mein String hat als length später die ContentLength vom InputStream, allerdings werden, falls Length z.B. 50540 ist nur 10055 angezeigt.

Hier meine 2. Lösung. Kann das Problem am String liegen?

Code:
...
InputStream in = myConnection.getInputStream();
int length = myConnection.getContentLength();
byte[] b = new byte[length];
int read=0;
while(read < length){
read += in.read(b,read,length-read);
}
String myString = new String(b,"UTF-8");
int myStringLength = myString.length();
...

length ist ~ genauso groß wie myStringLength, allerdings werden, falls ich myString im Debugger anschaue nur ~ 10000 angezeigt. Beim Parsern werden auch nur 10k beachtet.

EDIT:
Auch interessant ist folgendes. Wenn ich myString.substring(11000,20000) aufrufe, gibt der mir Text aus, den ich im Debugger aus myString nicht lesen konnte.
Ich weiß nicht, was ich da machen soll, weil ich gar nicht weiß, warum das passiert :-(

EDIT2:
Achja, ich kann leider das Thema-Topic nicht mehr verändern. Es liegt ja definitiv nicht am BufferedReader.

Gruß
Conners
 
Zuletzt bearbeitet:
Zurück