Eine Datei nicht immer von vorne einlesen

os2013

Grünschnabel
Hallo,
ich sehe den Wald vor lauter Bäumen nicht mehr. Ich habe eine Textdatei die ich zu Auswertungen regelmäßig mit einem Javaprogramm (auf der Konsole) durchforste. Das läuft mittels BufferedReader soweit recht gut.
Nur wird diese Textdatei im Laufe des Tages recht groß (1,5 GB und mehr) und die Laufzeit verlängert sich. Der Computer benötigt für 4,5 Mio Zeilen (1,1 GB) gute 35 Sekunden.
Nun möchte ich weitere Dateien mit in die Überprüfung einbeziehen und die Auswertungen noch ausbauen. Wenn ich nun die Sekunden addiere bin ich schnell bei 10 Minuten Laufzeit.

Ich suche nach einer Möglichkeit mir die letzte verarbeitete Zeile einer Datei zu merken? Also quasi den BufferedReader einfach offen lassen und dann nicht bei EOF aussteigen? Oder gibt es eine elegantere Lösung? Ich bin mir dessen bewusst, dass es keine generellen Informationen zu Anzahl der Zeilen usw. in einem Header der Textdatei gibt.

Über einen Tipp bin ich dankbar. Gruß

OS
 
Hi,

du könntest dir die Größe der Textdatei merken, wenn du anfängst zu lesen. An Hand dieser kannst du dann in dem Stream zu der Position springen (skip) und von dort an lesen.

Des weiteren würden sich auch eventuell Threads anbieten, je nachdem wie intensiv du die Zeilen verarbeiten und wieiviele Dateien du handhaben musst.

Grüße,
BK
 
Hallo BS,
das muss ich doch gleich mal ausprobieren. So einfach habe ich gar nicht gedacht!

Bezüglich Threads: Es ist geplant die Verarbeitung in Threads zu verteilen. Sonst geht die Performance ja ganz den Bach runter.
Danke erst einmal. Ich werde berichten.

Gruß
OS
 
Zurück