welchen line brak benutzt ein geg. textfile

dermoritz

Bekanntes Mitglied
gibt es eine Möglichkeit herauszubekommen welchen line break ein gegebenes Textfile benutzt? ich bastele grad an einem Programm welches in einem Textfile bestimmte Dinge ändert und ein neues Textfile erzeugt.
Das Programm soll sowohl die Kodierung so belassen wie sie ist (dazu muss man sie angeben). Aber 2. soll auch das verwendete line break das selbe bleiben - das ist ja von der Kodierung unabhängig?!


Das ganze ist in Java etwas komisch geregelt: Beim lesen z.B. über Scanner-Klasse wird mit der Kodierung anscheinend auch ein Linebreakzeichen angenommen - bei UTF-8 "\n" bei "iso..."-das "\n\r". (in manchen windowstextfiles findet der scanner nur eine "nextLine()" wenn man die Iso-Kodierung angibt.)
Beim schreiben mit BufferedWriter.newLine() wird anscheinend immer der "System-lineSeperator" benutzt also \n\r wenn man in windows programmiert.
 

musiKk

Top Contributor
Zunächst: Du meinst sicher [c]\r\n[/c], nicht umgekehrt.

Herausfinden, welcher Zeilentrenner in einer Datei verwendet wird, kannst Du durch Raten. Wenn es sich um reine Textdateien handelt, gibt es keinen Grund für ein falsches Vorkommen der verschiedenen Trennzeichen; da dürfte es eigentlich reichen, wenn bis zum ersten Trenner gelesen wird (bringt natürlich nur etwas bei Dateien mit mehr als einer Zeile).

Ansonsten ist der Trenner unabhängig vom Encoding. Dass [c]BufferedWriter#newLine()[/c] den Trenner des Systems benutzt, ist ja recht sinnvoll; irgendwas muss genommen werden. Stimmt der nicht, muss man [c]newLine()[/c] ja nicht verwenden (oder man ändert das Property [c]line.separator[/c]; laut Javadoc wird der Wert als Trenner verwendet, der zum Zeitpunkt der Erstellung des Writers aktuell ist).
Was [c]Scanner[/c] da macht, weiß ich nicht. Laut Quelltext verwendet [c]nextLine()[/c] sowohl [c]\r\n[/c] als auch [c]\r[/c] und [c]\n[/c], sowie ein paar Unicode-Zeichen. Im Zweifel einfach nochmal ein Beispielprogramm zeigen, welches das Problem verdeutlicht.
 

dermoritz

Bekanntes Mitglied
ok das heißt man muss in der geg. Textdatei nach \n und\r\n suchen. und dann nimmt man das was man gefunden hat und setzt es explizit an das ende jeder geschriebenen Zeile. (Ich will ja eine Textdatei im selben Format wie die gelesene schreiben.)
(die richtige Kodierung muss man sowieso raten oder?)
 

musiKk

Top Contributor
(die richtige Kodierung muss man sowieso raten oder?)

Richtig. Ich nehme an, es gibt Bibliotheken, die das machen, aber habe mich da noch nicht umgesehen. Prinzipiell ist es schöner, wenn der Nutzer diese Information angibt oder sie irgendwie in der Datei steht (wie z. B. bei XML-Dateien). Ersteres setzt natürlich voraus, dass die Zielgruppe des Programms mit den nötigen Begriffen etwas anfangen kann.
Ansonsten ist es oft nicht verkehrt, erstmal UTF-8 vorauszusetzen. Das hat mittlerweile eine relativ hohe Verbreitung und den Vorteil, dass es häufig fehlschlägt, wenn es nicht richtig ist (immer dann, wenn Zeichen außerhalb von ASCII verwendet werden).
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
J Welchen Packager soll ich verwenden. Allgemeine Java-Themen 7
B Mit welchen Datentypen und Strukturierung am Besten dutzende Baccaratspiele Shcritt für Schritt durchsimulieren? Allgemeine Java-Themen 26
S Interface Welchen Interface Stil favorisiert ihr? (usability) Allgemeine Java-Themen 17
J Welchen Obfuscator nehmen? Allgemeine Java-Themen 11
H String - Hat welchen Zeichensatz? Allgemeine Java-Themen 6
B Log4j --- Welchen Appender, wie konfigurieren Allgemeine Java-Themen 3
B welchen port muss ich angeben? Allgemeine Java-Themen 11
F Welcher Datentyp in welchen casten? Allgemeine Java-Themen 11
M Welchen Reader? Allgemeine Java-Themen 8
K Welchen Editor? Allgemeine Java-Themen 31
N Ermitteln welchen Typ ein "Object"-Objekt enthält Allgemeine Java-Themen 11
S welchen editor Allgemeine Java-Themen 5
S Welchen Editor soll man für Graphische lösungen benutzen Allgemeine Java-Themen 2
B Java mit command line und jars benutzen? Allgemeine Java-Themen 18
Meeresgott 2D-Grafik Bresenham's line algorithm Allgemeine Java-Themen 37
M Line-Fehler Allgemeine Java-Themen 8
G GUI-basiertes Java-Program in Command-line Version umwandeln Allgemeine Java-Themen 1
B Input/Output BufferedWriter/Reader replace line Allgemeine Java-Themen 6
F TrueType-Font in Single-Line-Font wandeln Allgemeine Java-Themen 0
G UUencoding bring Fehlermeldung: No beginn line / Missing 'end' line Allgemeine Java-Themen 0
B go to Line Allgemeine Java-Themen 8
M Swing java command line abfangen Allgemeine Java-Themen 8
M Java line separator (evtl nur in TextComponents...) Allgemeine Java-Themen 5
K Command Line Argument Interpreter für komplexe Strukturen Allgemeine Java-Themen 9
M MessageFormat : multi line Allgemeine Java-Themen 10
U Serach in Line Allgemeine Java-Themen 2
X Audio-Eingabegerät auswählen (MIC oder LINE-IN) Allgemeine Java-Themen 11
C Line-In Signalstärke Visualisieren Allgemeine Java-Themen 2
S Wie Carriage Return Line Feed abfragen. Allgemeine Java-Themen 6
P command line parameter auswerten Allgemeine Java-Themen 3
C Sound: Keine Line gefunden. Zu großer internal buffer? Allgemeine Java-Themen 3

Ähnliche Java Themen

Neue Themen


Oben