# Unterschied FileOutputStream und FileWriter?



## Verjigorm (14. Mai 2007)

Hallo,
vielleicht mach ich mich jetzt ja zum Deppen  , aber ich verstehe da einen grundlegenden Unterschied nicht.

Wo liegt denn der Unterschied zwischen einem FileOutputStream und FileWriter?
Also die Theorie kenn ich, mit Byte-Stream 8 Bit lang und 16 Bit lange Unicode-Zeichen.
Aber mir wird nicht klar, was das ganz bringt.

Wenn ich "hallo" per Filewriter oder FileOutputStream in eine Datei schreibe, dann "sieht" man erstmal keinen Unterschied, wenn man sich die Datei anschaut. (???)

Hintergrund des Ganzen ist:

Ich soll eine XML-Datei erstellen, die ungefähr so aussieht

```
<mydocument>
   <value1>...</value1>
   <value2>...</value2>
   ....
   <inhalt>
   ...
   ...
   </inhalt>
</mydocument>
```

und alles zwischen <inhalt></inhalt> soll per "Binärdatenstrom" abgespeichert werden.

soll ich jetzt nen Filewriter machen und alles bis <inhalt> schreiben, dann schliessen und danach nen FileoutputStream bis </inhalt>
und danach wieder nen Filewriter ?
Geht das überhaupt?

Ich soll später die "Daten" per XQuery/XPath (davon hab ich auch keinen Plan  ) wieder auslesen, hat dass dann irgendnen Unterschied?
Ich bin grad leicht überfordert 

Ich kann leider meinen tollen Betreuer, der mir diese Aufgabe gestellt, hat bis Mittwoch nicht erreichen ...

mfg Verjigorm


----------



## Der Müde Joe (14. Mai 2007)

JDOM.....

....nix FileStream...die mühe würd ich mir nicht antun (also Jdom intern dan schon)

EDIT:
mal zum gucken:
http://www.torsten-horn.de/techdocs/java-xml.htm

EDITEDIT:
FileWriter is meant for writing streams of characters. For writing streams of raw bytes, consider using a FileOutputStream.


----------



## Verjigorm (14. Mai 2007)

also irgendwie seh ich da nicht den Bezug zu meinen Fragen


----------



## The_S (14. Mai 2007)

Streams sind für Binär-Dateien, Writer sind für Text-Dateien. Joe wollte dich darauf hinweisen, dass du zum auslesen/schreiben von XML-Files JDom verwenden sollst.


----------



## Verjigorm (14. Mai 2007)

Hobbit_Im_Blutrausch hat gesagt.:
			
		

> Streams sind für Binär-Dateien, Writer sind für Text-Dateien.



Das ist mir schon klar, aber waran erkennt man den Unterschied? (siehe Oben)


----------



## Guest (14. Mai 2007)

bei einem writer hast du methoden mit denen du strings schreiben kannst...


----------



## Verjigorm (14. Mai 2007)

*grummel*

OK nochmal

ich mache folgendes:

```
FileOutputStream fos = new FileOutputStream( "test.txt");
fos.write( "hallo".getBytes());
```
und

```
BufferedWriter bw = new BufferedWriter ( new FileWriter ("test.txt") );
bw.write("hallo");
```

ich seh da persönlich keinen Unterschied, in der Datei steht jeweils "hallo" und ich kann das auch ganz normal per FileReader auslesen, auch wenn ich es als FileOutputStream in die Datei geschrieben habe.

Also was bringt mir das ganze?
Ich verstehe nicht, wieso die Aufgabenstellung sagt, ich solle alles zwischen <inhalt></inhalt> als FileOutputStream schreiben
Da muss doch was anders sein?

mfg


----------



## byte (14. Mai 2007)

Hobbit hats doch schon beantwortet:



			
				Hobbit_Im_Blutrausch hat gesagt.:
			
		

> Streams sind für Binär-Dateien, Writer sind für Text-Dateien.




Klar kannst Du auch mit dem OutputStream Textdateien schreiben, aber eben auch andere Binärdaten.


Wenn Du bei Deiner Aufgabe einen FOS benutzen sollst, dann liegt es nahe, dass da eben kein Text rein soll sondern rohe Bytes.


----------



## The_S (15. Mai 2007)

Um den Unterschied zu sehen, kannst du ja einfach mal ein Bild mit einem Reader lesen und anschließend mit einem Writer wieder in eine andere Datei schreiben. Selibges machst du dann nochmal mit Streams. Und dann sagst du uns, was du beobachten konntest  .


----------

