Ich habe eine Textdatei, in der ich nur die erste Zeile der Datei ändern möchte. Die Datei könnte Millionen von Zeilen lang sein, so dass ich lieber nicht über alles hinwegschleifen müsste, also frage ich mich, ob es eine andere Möglichkeit gibt, dies zu tun.
Ich möchte auch einige Regeln auf die erste Zeile anwenden, damit ich Instanzen bestimmter Wörter durch andere ersetzen kann.
Ist das möglich?
A RandomAccessFile
wird den Trick machen, es sei denn, die Länge der resultierenden Zeile unterscheidet sich von der Länge der ursprünglichen Zeile.
Wenn es sich herausstellt, dass Sie gezwungen sind, eine Kopie zu erstellen (wo die erste Zeile ersetzt wird und der Rest der Daten kopiert werden soll), schlage ich vor, BufferedReader
und BufferedWriter
zu verwenden. Benutze zuerst BufferedReader
's readLine()
, um die erste Zeile zu lesen. Ändern Sie es und schreiben Sie es in die BufferedWriter
. Verwenden Sie dann ein Array char[]
, um eine Brute-Force-Kopie des Rests der Datei auszuführen. Dies ist effizienter als das Kopieren Zeile für Zeile. Lassen Sie mich wissen, wenn Sie Details benötigen.
Eine weitere Option ist das Lesen und Schreiben in derselben Datei. Es wird jedoch ein bisschen komplexer sein. :) Lassen Sie mich wissen, wenn Sie Details dazu benötigen.
Wenn die neue Zeile eine andere Anzahl an Zeichen (Bytes) als die ursprüngliche erste Zeile hat, müssen Sie die gesamte Datei neu schreiben, um die Lücke zu beseitigen oder einen Teil der zweiten Zeile nicht zu überschreiben.
Natürlich, verschiedene Werkzeuge wie String.replaceFirst(String regex, String replacement)
( javadoc ) oder RandomAccessFile
( javadoc ) kann Ihnen bei dieser Aufgabe helfen.
Sie möchten eine RandomAccess-Datei . Mit der Datei können Sie lesen und schreiben wo immer Sie wollen in der Datei.
Es ist ähnlich wie InputStream und OutputStream, aber es erlaubt das Lesen und Schreiben, wo immer Sie möchten.
Tags und Links java