Hallo,
ich benutze folgende unten stehende Codezeilen um XML Daten per http von einem Server zu holen.
Ich hatte schon versucht den InputStreamReader durch einen br = BufferedReader(isr) zu schleusen und dann die Daten zumindest Zeilenweise mit br.readline() zu lesen. Aber dabei bricht der Datenstrom für mich unerklärlich schon beim ersten readline() ab.
Der Verzicht auf den Buffer läßt das Codestück funktionieren, aber jetzt ist es super langsam, weil ich z.B. bei 18kByte Daten etwas mehr als 18.000 Stringoperationen durchführe.
URLConnection con = titurl.openConnection();
InputStream is = con.getInputStream();
InputStreamReader isr = new InputStreamReader(is);
String regionsList = "";
int b = 0;
while( b > -1 ) {
b = isr.read();
// TODO durch was effizienteres ersetzen!
regionsList += (char) b;
}
Und jetzt die Frage:
a) Was kann ich tun damit ich herausfinde warum der BufferedReader es nicht tut?
b) Gibt es eine intelligentere Methode als +=(char) b? Ich hatte schon gelesen das das schlecht ist und man besser regionsList.concat("blabla") benutzen sollte, aber das geht nur für Strings. Und 18.000 mal ausgeführt klingt für mich einfach nicht besser.
Danke für Eure Hilfe,
Jürgen Hoffmann
ich benutze folgende unten stehende Codezeilen um XML Daten per http von einem Server zu holen.
Ich hatte schon versucht den InputStreamReader durch einen br = BufferedReader(isr) zu schleusen und dann die Daten zumindest Zeilenweise mit br.readline() zu lesen. Aber dabei bricht der Datenstrom für mich unerklärlich schon beim ersten readline() ab.
Der Verzicht auf den Buffer läßt das Codestück funktionieren, aber jetzt ist es super langsam, weil ich z.B. bei 18kByte Daten etwas mehr als 18.000 Stringoperationen durchführe.
URLConnection con = titurl.openConnection();
InputStream is = con.getInputStream();
InputStreamReader isr = new InputStreamReader(is);
String regionsList = "";
int b = 0;
while( b > -1 ) {
b = isr.read();
// TODO durch was effizienteres ersetzen!
regionsList += (char) b;
}
Und jetzt die Frage:
a) Was kann ich tun damit ich herausfinde warum der BufferedReader es nicht tut?
b) Gibt es eine intelligentere Methode als +=(char) b? Ich hatte schon gelesen das das schlecht ist und man besser regionsList.concat("blabla") benutzen sollte, aber das geht nur für Strings. Und 18.000 mal ausgeführt klingt für mich einfach nicht besser.
Danke für Eure Hilfe,
Jürgen Hoffmann