Hi,
ich wollte ein Programm schreiben,dass eine sehr,sehr große .txt einliest (zeilenweise). Auf die Zeilen einen regex anwendet und dann eine neue Datei mit der Ausgabe schreibt...
Wie gesagt ist das Problem die größe der Datei...Bei kleineren funktioniert der Algorithmus 1a. Wenn ich aber die eigentlichen,großen Dateien einlesen will, dann wird anscheinend die Datei nicht vollständig geladen.
Die Dateien sind ca. 1 - 1,5 GB groß! Arbeitsspeicher ist ausreichend vorhanden (3,5 gb) und wird auch nicht voll ausgelastet.
Hier noch ein kleiner "prinzipieller" Codeausschnitt:
Hat jemand eine Idee,ob man eventuell die Datei besser puffern kann bzw. wie vielleicht erfahrende Programmierer bei sowas vorgehen? Ich meine, bei Tools wie UltraEdit geht es ja auch...Aber eigentlich dürfte es ja kein Problem sein,dass durch Java alles über die VM geht -oder?
Oder sind Threads die Lösung?
Bin für alle Ideen dankbar :toll:
ich wollte ein Programm schreiben,dass eine sehr,sehr große .txt einliest (zeilenweise). Auf die Zeilen einen regex anwendet und dann eine neue Datei mit der Ausgabe schreibt...
Wie gesagt ist das Problem die größe der Datei...Bei kleineren funktioniert der Algorithmus 1a. Wenn ich aber die eigentlichen,großen Dateien einlesen will, dann wird anscheinend die Datei nicht vollständig geladen.
Die Dateien sind ca. 1 - 1,5 GB groß! Arbeitsspeicher ist ausreichend vorhanden (3,5 gb) und wird auch nicht voll ausgelastet.
Hier noch ein kleiner "prinzipieller" Codeausschnitt:
Java:
FileReader fr = new FileReader(chooser.getSelectedFile());
BufferedReader br = new BufferedReader(fr);
String s;
while((s = br.readLine()) != null) {
//schreibe
}
fr.close();
Hat jemand eine Idee,ob man eventuell die Datei besser puffern kann bzw. wie vielleicht erfahrende Programmierer bei sowas vorgehen? Ich meine, bei Tools wie UltraEdit geht es ja auch...Aber eigentlich dürfte es ja kein Problem sein,dass durch Java alles über die VM geht -oder?
Oder sind Threads die Lösung?
Bin für alle Ideen dankbar :toll: