Text-Datei Lesen im Java
Ich habe eine text-Datei. Ich möchte zum abrufen von Inhalt von einer Zeile zu einer anderen Zeile.
Zum Beispiel, ist die Datei möglicherweise 200K Zeilen. Ich will den Inhalt Lesen von Zeile 78 Zeile 2735. Da die Datei sehr groß sein können, möchte ich nicht Lesen Sie den gesamten Inhalt in den Speicher.
InformationsquelleAutor frank wang | 2010-04-26
Du musst angemeldet sein, um einen Kommentar abzugeben.
Hier ist ein Anfang einer möglichen Lösung:
//assume
mitassert
und fügen Sie eine;
am Ende 😉Auch, gibt es einen Grund für die Verwendung eines Scanners statt der (wohl) einfacher
BufferedReader
? Auch: Sie müssen nicht die Zeichenkodierung anzugeben, die zum Lesen aus der Datei, so dass Sie verlassen sind, dass ein Teil auf Glück.gute Punkte, die ich bearbeitet meine Antwort! Über die
BufferedReader
, ich nehme an, (d) es spielt keine Rolle, dass viel: bin ich Irre?du hast Recht:
BufferedReader
/Scanner
spielt keine große Rolle (solange der Zeichensatz korrekt behandelt wird). Ich denke nur, dassScanner
hat mehr Funktionen als nötig für diesen Anwendungsfall.ja. Scanner basiert auf regulären Ausdruck und es passt zu meinem Anwendungsfall. Bei der Suche nach der Lösung habe ich gefunden, dass der apache common-io hat lineiterator Klasse. Es kann verwendet werden, um die Iteration der Zeilen.
InformationsquelleAutor Bart Kiers
Verwenden BufferedReader.readLine() und zählen Sie die Linien. Sie halten nur die Größe des Puffers und die aktuelle Zeile im Speicher.
Und Nein, es ist nicht möglich, Linie 3412 Lesen, ohne die ganze Datei bis zu diesem Punkt (es sei denn, deine Zeilen haben alle eine Feste Größe haben).
InformationsquelleAutor Michael Borgwardt
Einfach nur liest Zeile für Zeile die erste und die Zählung der Zeilennummern und anfangen, die Inhalte müssen Sie in der Zeile position, die Sie erwähnt.
InformationsquelleAutor khmarbaise
Ich würde vorschlagen, mit einer RandomAccessFile, diese Klasse ermöglicht das springen zu einer bestimmten Position in einer Datei. Also, wenn Sie wollen, Lesen Sie die Letzte Zeile der Datei, die Sie nicht gelesen haben, alle vorherigen Zeilen, die Sie können, springen Sie einfach auf diese Zeile.
InformationsquelleAutor flopex