java.util.regex.Matcher ganze Datei gebuffered einlesen

r0bby

Grünschnabel
Hey Leute,

Ich möchte ein Pattern mit einem Matcher vergleichen. Wobei der Matcher aus einer kompletten Datei besteht.

Nun wird diese Datei sehr groß sein (ca. 300 MB) und da der Heap das nun nicht verkraften kann soll diese Datei per BufferedReader (oder so) eingelesen werden.
Kann mir jemand vielleicht posten wie ich das am besten realisieren kann?
Das Problem ist halt dass der BufferedReader höchstens eine Zeile einlesen kann, dies ist jeodch wiederum zu wenig. Am besten soll der Reader alles einlesen bis der Speicher voll ist, die Datei bearbeiten dann abspeichern und den nächsten abschnitt einlesen.

Übrigens ist die Datei welche ich einlesen möchte eine XML Datei. Ist hierfür möglichweise SAX bzw. DOM besser geeignet?

Gruß r0bby
 
Hallo Robby,

ich glaube das müsste KB heißen und nicht MB. Eine einfache Lösung zur Einlesung einer kompletten Textdatei somit natürlich auch XML-Datei wäre die Methode read() der Klasse JTextArea{}. Damit kannst du die gesamte Datei in einem Schritt einlesen und dann anschließend einem String zur Weiterverarbeitung geben.

Code:
JTextArea t = new JTextArea();
t.read(new FileReader(new File("info.xml")),null)
String s = t.getText();

Vg Erdal
 
Hallo flashray,

es heißt schon MB denn die Dateien sind eben riesig. Eine davon hat sogar 2 GB. Deswegen kann ich die Datei nicht komplett eilesen da der Arbeitsspeicher bzw. der Heap nicht groß genug sind. Und da ich kein Geld habe um meinen Arbeitsspeicher aufzurüsten muss ich die Dateien irgendwie stückweise einlesen.
 
Hallo!

Beschreib doch mal genauer, was du eigentlich machen willst. Wenn du die XML Datei nur auslesen und auf bestimmte Elemente reagieren moechtest solltest du einen SAX oder StAX Parser verwenden. Wenn du die Datei noch manipulieren willst bietet sich auch ein effizienter StAX "Parser" an oder eben ein Speicherfressender DOM Parser.

Gruss Tom
 
Hi,

also das Programm soll die XML Datei einlesen und auf Bestimmte Elemente prüfen. Falls die Elemente vorhanden sind, so soll das Programm diese verändern. optimal währe es wenn das Programm die Datei Tagweise einliest.
 
Hallo!

Wenn du das Dokument noch manipulieren willst solltest du einen StAX Parser verwenden. Damit kannst du innerhalb des XML Dokuments ueber einen Cursor navigieren und auch Elemente manipulieren.

Gruss Tom
 
Zurück