Wie zu erkennen/behandeln Textdatei mit Zeilenumbruch in Java?
Bekomme ich Dateien in verschiedenen Formaten und aus verschiedenen Systemen, die ich brauche, um den import in unsere Datenbank. Teil des import-Prozesses, um zu überprüfen, die Länge der Linie, um sicherzustellen, dass das format korrekt ist.
Wir scheinen Probleme mit Dateien, die von UNIX-Systemen, wo ein Charakter Hinzugefügt wird. Ich vermute, dies ist aufgrund der Rücktransport kodiert wird anders auf UNIX-und windows-Plattform.
Gibt es eine Möglichkeit zu erkennen, auf dem Datei-system eine Datei erstellt wurde, über die Prüfung das Letzte Zeichen auf der Zeile? Oder vielleicht ein Weg, das Lesen der Dateien als text und nicht Binär was ich vermute ist das Problem?
Danke Jungs !
Titel und tag (Dateisysteme) sind irreführend.
InformationsquelleAutor rafrafUk | 2010-06-11
Du musst angemeldet sein, um einen Kommentar abzugeben.
Unix-Systeme verwenden
\n
Zeilenenden haben, während windows verwendet\r\n
- und mac verwendet\r
.Sie kann nicht erkennen, die Datei system, da spielt es keine Rolle, auf allen. Ich kann mit \n auf windows, wenn mein editor es unterstützt, zum Beispiel. Es ist einfach der standard, auf denen OS, nicht eine Forderung.
Den richtigen Weg - vorausgesetzt, Sie haben nicht eine Funktion die richtig tokenizes egal was zeilenendungen der Datei verwendet - ist die Suche nach einem \n ODER ein \r und dann Ende der aktuellen Zeile und die Streifen alle chars aus den verbleibenden Daten, die entweder \r oder \n bevor Sie beginnen die nächste Zeile.
Dies führt jedoch zu Problemen, wenn Sie leere Zeilen und die Notwendigkeit, Sie zu halten. In diesem Fall haben Sie Blick auf Zeilenumbrüche mehr gezielt:
Danke für deine Antwort ich dachte, dass dies vielleicht der einzige Weg ...
InformationsquelleAutor ThiefMaster
Meisten der Zeit, die von Java verarbeitet unterschiedliche Arten von Zeilenenden automatisch, geräuschlos analysieren
\n
(unix)\r\n
(windows) und\r
(mac) ohne dass Sie (solange Sie mit einem Zeichen-stream). Siehe die Dokumentation fürjava.io.FileReader
und Freunde. Mit einem Zeichen-stream wird auch mit allen möglichen Unicode-Codierung-Schemata.Wenn Sie möchten, Lesen Sie die Zeile Trennzeichen explizit, Sie benötigen zum Lesen der Datei als byte-stream. Siehe die Dokumentation für
java.io.DataInputStream
und Freunde.InformationsquelleAutor Craig Trader
Nicht. Und auch die überprüfung der line termination sequence ist nur ein Hinweis. Wir können einfach erstellen Sie die Dateien mit DOS-Zeile Kündigung auf UNIX, und Umgekehrt.
Ja. Öffnen Sie die Datei mit einem Datei-reader, wickeln Sie es in ein buffered reader und verwenden Sie die
readLine()
- Methode zum Lesen der Datei eine Zeile zu einem Zeitpunkt. Diese Methode erkennt eine"\n"
,"\r"
oder"\r\n"
als line-Trenner, und damit funktioniert für DOS -, UNIX-und Mac-Dateien.Hier einige typische code:
InformationsquelleAutor Stephen C