Java eine Kopie eines Lesers machen
-
20-09-2019 - |
Frage
habe ich einen BufferedReader durch eine Datei Looping. Wenn ich einen konkreten Fall getroffen, würde ich Looping mit einer anderen Instanz des Lesers fortfahren, aber an diesem Punkt beginnen.
Alle Ideen für eine empfohlene Lösung? Erstellen Sie einen separaten Leser, verwenden Sie die Markierungsfunktion, etc.?
Lösung
Während auf meinen Kommentar für Ihre Antwort zu warten, ich bin fest mit Annahmen zu machen.
Wenn es der linewise Eingang ist Sie schätzen, können Sie als angenehm überrascht sein, wie ich jetzt, dass RandomAccessFile
zu entdecken war (seit 1.4 oder 1.5), um die readLine
Methode unterstützt. Natürlich Random gibt Ihnen eine fein abgestimmte Kontrolle über Position.
Wenn Sie IO gepuffert werden sollen, können Sie einen Leser um einen CharacterBuffer
Einwickeln betrachten oder vielleicht eine ByteBuffer
eingewickelt um eine Datei mit dem nio
API abgebildet. Dies gibt Ihnen die Möglichkeit, eine Datei als Speicher, mit Feinsteuerung des Lesezeigers zu behandeln. Und weil die Daten alle im Speicher befinden, ist Pufferung kostenlos enthalten.
Andere Tipps
Wenn Sie verfolgen, wie viele Zeichen, die Sie bisher gelesen haben, können Sie einen neuen BufferedReader und Verwendung erstellen überspringen .
Wie Noel hervorgehoben hat, müssten Sie mit BufferedReader.readLine()
zu vermeiden, da readLine()
Zeilenumbrüche verwerfen und Ihre Zeichenzählung ungenau machen. Sie sollten wahrscheinlich nicht auf readline count () nie anders, wenn jemand immer genannt wird jemals Ihren Code pflegen müssen.
Wenn Sie die Verwendung skip
entscheiden zu tun, sollten Sie Ihre eigenen gepufferte Reader schreiben, die Ihnen einen die Zeilenumbrüche Offset zu zählen.