.csv-Datei --> mittels character stream oder byte stream?

oraclin25

Erfahrenes Mitglied
Hallo zusammen,

ich habe gelernt, dass man für eine Text-Datei sowohl character stream als auch byte stream verwenden kann. Beispiel:
Code:
in = new FileInputStream("xanadu.txt");
out = new FileOutputStream("outagain.txt");

Code:
inputStream = new FileReader("xanadu.txt");
outputStream = new FileWriter("characteroutput.txt");

FileInputStream bzw. FileOutputStream --> byte stream
FileReader bzw. FileWriter --> character stream

Bei den Code-Beispielen handelt es sich ja um eine Text-Datei. Ich dachte eigentlich, bei einer Text-Datei ist es vorteilhafter, einen character-Stream zu verwenden. Ist das ein Denkfehler von mir? Was wäre hier der Vorteil bzw. der Nachteil bei Verwendung von byte-Stream?

Ich habe gelernt, dass in einer binary-Datei beispielweise nicht die einzelnen Characters gespeichert sind, sondern eher die Datentypen, beispielweise ein Double. Aber, ich muss ganz ehrlich sagen, ich verstehe nicht 100%-ig, was eine binary-Datei ist.

Vielen Dank für Eure Hilfe.

Schöne Grüße aus Rheinland,

Eure Ratna:)
 
Hallo Ratna!

Eigentlich ist jede Datei eine Binär-Datei. Ein Character-Stream ist sozusagen nur ein anderer Bllickwinkel auf die Bytes. Und in diesem Fall auf Buchstaben bzw. Zeichen ausgelegt.

Wenn Du also mit CSV-Dateien arbeitest, arbeitest Du mit Strings (=Zeichenketten) und kannst daher Character-Streams verwenden. Du musst allerdings nicht, aber sie unterstützen Dich natürlich weil sie ja dafür konzipiert sind.

Wichtig bei Character-Streams ist allerdings das Encoding, also welchen Zeichensatz Du verwendest (ASCII, UTF-8, ISO-8859-1, usw.). Du solltest den Character-Streams immer ein Encoding (Charset) mitgeben. Und je nachdem woher Dein Input für die Dateien kommt, auch evtl. eine Konvertierung durchführen. Ansonsten bekommst Du irgendwo Probleme mit der Darstellung von Sonderzeichen wie Umlauten etc.

Beste Grüße,
Billie
 
Hallo Billlie,

danke für die rasche Antwort. Vielleicht eine ganz blöde Frage, wie kann ich in einer csv-Datei feststellen, in welchem Encoding die Datei geschrieben ist?

Schöne Grüße aus Rheinland,

Eure Ratna
 
Guten Morgen!

Wenn Du bereits eine CSV-Datei hast und das Encoding nicht kennst musst Du Dir die Sonderzeichen und Umlaute mit einem Hex-Editor ansehen.

Ein ä hat zB folgende Werte im jeweiligen Encoding:

UTF-8 c3a4
ISO-8859-1 e4
UTF-16 feff00e4

Auf Wikipedia findest Du die entsprechenden Zeichensatz-Tabellen, zB

http://de.wikipedia.org/wiki/ISO-8859-1

Einige Unicode-Dateien enthalten eine sogenannte BOM am Anfang einer Datei, daran kann man dann das Encoding festmachen. Allerdings sieht man das eher selten:

http://de.wikipedia.org/wiki/Byte_Order_Mark

Beste Grüße,
Billie
 

Neue Beiträge

Zurück