# Objekte ein- und auslesen PrintWriter



## siba (15. Dez 2005)

Hallo!

Soeben habe ich versucht ein Objekt mithilfe von PrintWriter in ein Dokument auszulesen, aber irgendwie gelingt es mir nicht, die Farbe des Objektes mit getFarbe() auszulesen. Geht dies so überhaupt?




```
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;

public class SchreibenPrintWriter {
	public static void main(String[] args) {
		File f = new File("PrintWriter.txt");
		try {
			Auto a = new Auto();
			a.setFarbe("grün");
			FileWriter fw = new FileWriter(f);
			BufferedWriter bw = new BufferedWriter(fw);
			PrintWriter pw = new PrintWriter(bw);
			pw.println("eins");
			pw.println(a);
			pw.close();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
}
```

Versuch es wieder auszulesen:


```
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;

public class LesenPrintWriter {
	public static void main(String[] args) {
		File f = new File("PrintWriter.txt");
		try {
			FileReader fw = new FileReader(f);
			BufferedReader bw = new BufferedReader(fw);
			String zeichen = null;
			while ((zeichen = bw.readLine()) != null){
				System.out.println(zeichen);
			}
			bw.close();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
}
```

Ausgabe auf Konsole:

eins
scjp.Auto@ad3ba4


----------



## Roar (15. Dez 2005)

> aber irgendwie gelingt es mir nicht, die Farbe des Objektes mit getFarbe() auszulesen. Geht dies so überhaupt?


jah. wenn deine klasse eine methode getFrabe() hat sicher. ich sehe aber auch nirgendwo in deinem programm einen aufruf von getFarbe() :?
ansonten funktioniert dein progdramm doch


----------



## bygones (15. Dez 2005)

ein Objekt mit PrintWriter zu schreiben ist nicht so sinnvoll.



			
				API hat gesagt.:
			
		

> Print formatted representations of objects to a text-output stream



willst du ein Object speichern nimm den ObjectOutputStream z.b


----------



## siba (15. Dez 2005)

Merci für die Information, daß es nicht sinnvoll ist, den PrintWriter für Objekte zu benutzen. Also die Getter-Methode gibt es natürlich in meinem Auto, aber ich weiß nicht wie ich es integrieren soll so etwas wie zeichen.getFarbe() funktioniert nicht! Wie könnte es denn funktionieren?


----------



## bygones (15. Dez 2005)

z.b.


```
ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("file.out"));
oos.writeObject(auto);
oos.close();

// .....

ObjectIntputStream ois = new ObjectInputStream(new FileInputStream("file.out"));
Auto auto = (Auto)ois.readObject();
ois.close();
```

Deine Klasse muss das Interface Serializable implementieren dann klappts


----------



## siba (15. Dez 2005)

Merci! Also defnitiv nicht mit PrintWriter! Sonder mit OutputStream!


----------



## siba (15. Dez 2005)

Noch ein zustäzliches Problem! Ich habe soeben den FileOutputStream() ausprobiert. Sowohl beim Auslesn als auch beim Auslesen und bekomme immer -1 zurück! Ist der FileOutputStream() dann nur in Kombination mit ObjectOutputStream() sinnig? Oder stimmt etwas mit meinem Code nicht?

Einlesen



```
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;

public class SchreibenByte {
	public static void main(String[] args) {
		File f = new File("Byte.txt");
		try {
			FileOutputStream fw = new FileOutputStream(f);
			fw.write(2589);
			fw.close();
		} catch (IOException e) {
			e.printStackTrace();
		}

	}

}
```

Auslesen


```
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;

public class LesenByte {
	public static void main(String[] args) {
		File f = new File("Byte.txt");
		try {
			FileInputStream fi = new FileInputStream(f);
			
			int zeichen = 0;
			while ((zeichen = fi.read()) != 0){
				System.out.println(zeichen);
			}
			fi.close();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
}
```


----------

