PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Stream to String



Daim
22-02-2007, 11:39
Guten Tag,
ich habe da ein kleins Problem das bestimmt einfach zu lösen ist. Jedoch komme ich momentan nicht auch die Lösung.

Folgender Code (Das Standardbeispiel schlechthin ;-))


Socket sock = new Socket("meinserver.de");
InputStream in = sock.getInputStream();
OutputStream out = sock.getOutputStream();
String abfrage = "bla vla bla";
out.write(abfrage.getBytes());

int len;
byte[] b = new byte[100];
while ((len = in.read(b)) != -1)
{
System.out.write(b,0,len);
}

in.close();
out.close();
sock.close();

Ich will nun die Ausgabe jedoch in einen String schreiben und nicht gleich ausgeben lassen. Wie kann man das realisieren?

Danke Daim

Thomas Engelke
22-02-2007, 13:37
java.lang.String hat als Konstruktor u.A. String(byte[] bytes).

TME

Daim
23-02-2007, 09:59
Danke. Habe es doch ein bisschen anders gelöst.



inputStream = new BufferedReader(new InputStreamReader(sock.getInputStream()));

while ( (line = inputStream.readLine()) != null){

// Lese jede einzelne Zeile aus
dataContent = dataContent + new String(line+"\n");
}

mwanaheri
23-02-2007, 11:13
Dann sollte dataContent allerdings ein StringBuffer (oder ein StringBuilder) sein, denn sonst erzeugst du bei jedem Durchlauf einen neuen String, was irre Mengen Speicher frisst. In der schleife hieße das dann:

dataContent.append(line + "\n");

Wenn du es nach dem Auslesen als echten String brauchst, reicht

dataContent.toString()

Daim
23-02-2007, 16:31
OK, Danke. Das war mir nicht so bewusst. Habe es geändert und läuft natürlich genau so gut (wenn nicht sogar besser wie du sagtest).