trc Geschrieben 28. Januar 2004 Geschrieben 28. Januar 2004 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 Zitieren
Jaraz Geschrieben 28. Januar 2004 Geschrieben 28. Januar 2004 Wie sieht deine Suche denn aus? Gruß Jaraz Zitieren
trc Geschrieben 28. Januar 2004 Autor Geschrieben 28. Januar 2004 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. Zitieren
Jaraz Geschrieben 28. Januar 2004 Geschrieben 28. Januar 2004 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 Zitieren
P3AC3MAK3R Geschrieben 28. Januar 2004 Geschrieben 28. Januar 2004 Ich kann da jetzt nur mutmaßen, aber evtl. wäre eine native Methode eine Lösungsmöglichkeit. Zitieren
jan76 Geschrieben 28. Januar 2004 Geschrieben 28. Januar 2004 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. Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.