Ersetzen Sie die erste Zeile einer Textdatei in Java
Ich habe eine text-Datei wo ich das ändern wollen, nur die erste Zeile der Datei. Die Datei könnte Millionen von Zeilen lang, so dass ich lieber nicht haben, um eine Schleife über alles, so Frage ich mich, ob es eine andere Möglichkeit, dies zu tun.
Ich würde auch gerne gelten einige Regeln, um die erste Zeile, so dass ich ersetzen Instanzen bestimmter Worte mit anderen Worten.
Ist das möglich?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Einen
RandomAccessFile
wird den trick tun, es sei denn, die Länge der resultierenden Linie unterscheidet sich von der Länge der ursprünglichen Linie.Wenn es sich herausstellt, sind Sie gezwungen, führen Sie eine Kopie (wo die erste Zeile ersetzt wird und die restlichen Daten kopiert werden sollen als-ist), schlage ich vor, eine
BufferedReader
undBufferedWriter
. Der ersten VerwendungBufferedReader
'sreadLine()
Lesen der ersten Zeile. Ändern Sie es und schreiben Sie es auf dieBufferedWriter
. Dann mit einemchar[]
array zur Durchführung einer brute-force-Kopie den Rest der Datei. Dies wird effizienter sein als die Kopie Zeile für Zeile. Lassen Sie mich wissen, wenn Sie brauchen, details..Andere Möglichkeit ist die Durchführung der Lesen und schreiben innerhalb der gleichen Datei. Es wird ein bisschen komplexer aber. 🙂 Lasst mich wissen, wenn Sie brauchen, details dazu sowie..
Wenn die neue Zeile eine unterschiedliche Anzahl von Zeichen (bytes) als die ursprüngliche erste Zeile, Sie müssen re-schreiben der gesamten Datei, um loszuwerden, der Abstand oder vermeiden überschreiben Teil der zweiten Zeile.
Natürlich, verschiedene Werkzeuge wie
String.replaceFirst(String regex, String replacement)
(javadoc) oder dieRandomAccessFile
(javadoc) kann Ihnen bei dieser Aufgabe helfen.Du willst ein RandomAccesssFile. Mithilfe der Datei können Sie Lesen und schreiben wo Sie wollen in der Datei.
Ist es viel wie ein InputStream-und Ausgabestrom, aber es ermöglicht das Lesen und schreiben wo Sie wollen.
anwenden einer regex nur einmal.
String.replaceFirst("regex", "replacementstring") : http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html#replaceFirst(java.lang.String,%20java.lang.String)
Öffnen Sie die Datei als RandomAccessFile. Lesen Sie die 1. Zeile in einen string und dann übernehmen Sie die änderung, und schreiben Sie dann den string zurück.
Warum nicht schreiben Sie ein Perl-Skript und rufen es mit der Laufzeit.exec(). Nicht eine Reine java-Lösung wenn. Auch haben Sie einen Blick auf diese Artikel, bevor Sie gehen tief http://www.javaworld.com/javaworld/jw-12-2000/jw-1229-traps.html