Datei einlesen, ersetzen

flashOr

Erfahrenes Mitglied
Hallo,
ich möchte eine Datei einlesen, bestimmte Zeichen ersetzen und dann in eine neue Datei schreiben. Das ist eigentlich auch alles kein Problem, nur leider ist das sehr sehr langsam. Das Problem ist, dass die einzulesende Textdatei um die 30MB groß ist.
Das einlesen hab ich bisher Zeilenweise per BufferedReader gemacht, dann ersetzt und zwischengespeichert. Am Ende habe ich alles auf einmal in eine neue Datei geschrieben.

Mein Frage ist wie kann ich die Performance des ganzen noch optimieren. Würde es vielleicht schneller gehen wenn ich die Quelldatei auf einmal einlesen würde? Gibts da evtl. schon Klassen dafür? Ein paar Ideen wären ganz nett.
 
Vielleicht hilft Dir java.io.RandomAccessFile. Dort kannst Du innerhalb an bestimmte Stellen hüpfen und modifizieren.

z.B.:
Code:
myRAF.seek(22000);
int i = myRAF.read();
switch (i) {
case 4:
myRAF.write(7);
break;
case 12:
myRAF.write(17);
break;
case 39:
myRAF.write(74);
break;
}
 
Zur Performance bei so großen Dateien kann ich nix sagen, aber für File-Aktionen dieser Art würd ich mal einen Blick auf Commons-IO werfen (das JAR gibts hier: http://jakarta.apache.org/commons/io/).
Die Klasse FileUtils aus diesem JAR hat zwei statische Methoden writeStringToFile() und readFileFromString(), die das ganze sehr komfortabel machen. Und ich nehm an, die Leutz von dem Projekt haben das ganze sicherlich performanceoptimiert gebastelt.

MfG Henning
 
Zurück