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
Jaraz Geschrieben 28. Januar 2004 Geschrieben 28. Januar 2004 Wie sieht deine Suche denn aus? Gruß Jaraz
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.
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
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.
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.
Empfohlene Beiträge
Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren
Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können
Benutzerkonto erstellen
Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!
Neues Benutzerkonto erstellenAnmelden
Du hast bereits ein Benutzerkonto? Melde Dich hier an.
Jetzt anmelden