Ersetzen Sie die erste Zeile einer Textdatei in Java

8

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?

    
Bialecki 14.10.2008, 17:52
quelle

5 Antworten

15

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.

    
volley 14.10.2008, 18:06
quelle
3

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.

    
David Schmitt 14.10.2008 18:04
quelle
2

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.

    
jjnguy 14.10.2008 18:00
quelle
1

Wenden Sie eine Regex nur einmal an. String.replaceFirst ("Regex", "Ersetzungsstring"): Ссылка

Öffnen Sie die Datei als RandomAccessFile. Lesen Sie die erste Zeile in eine Zeichenfolge und wenden Sie dann die Änderung an und schreiben Sie die Zeichenfolge zurück.

    
anjanb 14.10.2008 18:01
quelle
-4

Warum schreiben Sie kein Perl-Skript und rufen es mit Runtime.exec () auf. Keine reine Java-Lösung. Werfen Sie auch einen Blick auf diesen Artikel, bevor Sie tief gehen Ссылка

>     
questzen 15.10.2008 11:10
quelle

Tags und Links