Textzeile in OutputStream schreiben

DarthShader

Erfahrenes Mitglied
Hallo,

ich würde gerne folgendes realisieren: Eine Methode soll als Parameter einen Ausgabestream erhalten (z.B. "SerializeData( OutputStream out )"). Innerhalb dieser Methode sollen Daten in den Strom geschrieben werden, und zwar nur Textzeichen, oder noch spezieller: genau ein String / eine Textzeile.

Der Stream soll kein spezieller TextWriter oder so sein, damit ich das ganze eben generischer forumulieren kann, sollte sich das "Ziel des Streams" einmal ändern.

Zunächst brauche ich die Daten lediglich in einer Textdatei, d.h. ich würde die Methode mit einem FileOutputStram als Parameter aufrufen.

Meine Frage ist nun, wie muss der Code aussehen, um eine Zeile Text in einen OutputStream zu schreiben (der z.B. ein FileOutputStream ist)? Ich kann ja nur Byte Arrays per .write schreiben, wie muss dieses aussehen, um daraus eine Textzeile zu machen (sprich, am Ende ein Newline Char o.Ä., sollte plattformunabhängig sein).

Oder sollte ich das ganze anders angehen, z.B. mit einem TextWriter?


Vielen Dank für Eure Hilfe
 
Hallo!

Code:
/**
 * 
 */
package de.tutorials;

import java.io.DataOutputStream;
import java.io.ObjectOutputStream;
import java.io.OutputStream;
import java.io.PrintStream;
import java.util.Date;

/**
 * @author Tom
 * 
 */
public class WriteToStreamExample {

	/**
	 * @param args
	 */
	public static void main(String[] args) throws Exception {
		OutputStream out = System.out;
		System.out.println("Message: ");
		writeMessageToStream(out);
		System.out.println("Int: ");
		writeIntToStream(out);
		System.out.println("Object: ");
		writeObjectToStream(out);
		out.close();
	}

	private static void writeObjectToStream(OutputStream out) throws Exception {
		ObjectOutputStream objectOutputStream = new ObjectOutputStream(out);
		objectOutputStream.writeObject(new Date());
		objectOutputStream.flush();
	}

	private static void writeIntToStream(OutputStream out) throws Exception {
		DataOutputStream dataOutputStream = new DataOutputStream(out);
		dataOutputStream.writeInt(Integer.MAX_VALUE);
		dataOutputStream.flush();
	}

	private static void writeMessageToStream(OutputStream out) {
		PrintStream ps = new PrintStream(out);
		ps.println("tutorials.de - user helfen usern - ");
	}
}

Gruss Tom
 
Ah, vielen Dank für das Beispiel. Im Grunde fehlte mir nur die Zeile mit "PrintStream ps = new PrintStream(out);", oder anders ausgedrückt, mir fehlte das Wissen, dass man die Unterklassen des OutputStreams so instanzieren kann, dass man eben den Stream als Kontruktor-Parameter mitgeben kann.

Danke!
 
Zurück