Veröffentlicht 28. Januar 200421 j hi, ich habe volgendes Problem. Ich lese eine Textdatei (500MB!!!) zeilenweise ein und will nun diese Zeile, wenn sie einen Bestimten String enthält in eine andere Textdatei schreiben. Im moment mache ich dies mit der matches Funktion der String Klasse. Das dauert aber ewig, gibt es da eine schnellere alternative? mfg trc
28. Januar 200421 j hi, im mom so: if (sIn.indexOf("I0128") != -1 || sIn.indexOf("I0129") != -1 || sIn.indexOf("I0130") != -1 || sIn.indexOf("I0131") != -1 || sIn.indexOf("I0132") != -1 || sIn.indexOf("E0005") != -1 || sIn.indexOf("PR") != -1) { } else{ continue; } also sIn ist die eingelesene Zeile, indexOf ist wesentlich schneller gewesen als matches, könnte aber noch schneller gehn.
28. Januar 200421 j Original geschrieben von trc indexOf ist wesentlich schneller gewesen als matches Ja, sowas hatte ich mir schon gedacht, deswegen meine Frage. Nun ja, viel schneller als indexOf wird es wohl nicht gehen. Man könnte das ganze höchstens noch als Stream einlesen und dann selber nach den bytes suchen, aber ich glaube nicht das das signifkant schneller sein könnte. Gruß Jaraz
28. Januar 200421 j Ich kann da jetzt nur mutmaßen, aber evtl. wäre eine native Methode eine Lösungsmöglichkeit.
28. Januar 200421 j bist Du sicher, dass das Geschwindigkeitsproblem am String-Matching liegt - oder vielleicht doch am Auslesen der Datei? Wenn Du JDK1.4+ benutzt könntest Du mal Memory-mapped files ausprobieren.
Archiv
Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.