Forums Neueste Beiträge
 

Speicherfehler beim verarbeiten von Textdateien

05/02/2009 - 14:10 von Uwe Rossberg | Report spam
Hallo,

beim verarbeiten von grossen (ab 10 MB aufwàrts) Textdateien bekomme ich
immer mit folgender Routine einen Speicherfehler (OutOfMemoryException)
string ergebnis = "";
string[] zerteilen = sammlung.Split('|');
// Datensatz zusammen bauen

// Zeilen erstellen
// führende Zeilennummern entfernen
for (int i = 0; i <= zerteilen.Length - 2; i++)
{
if (zerteilen[i].Substring(0, 2) == "0A")
{
zerteilen[i] = zerteilen[i] + "|";
i++;
}
if (zerteilen[i].Length == 4 && zerteilen[i].Substring(0, 4)
== "0A")
{
zerteilen[i] = zerteilen[i] + "|";
i++;
}
if (zerteilen[i].Length == 4 || zerteilen[i].Length == 6)
{
zerteilen[i] = zerteilen[i].Remove(0, 4) + "|";
}
else
{
zerteilen[i] = zerteilen[i].Remove(0, 4) + "|";
}
}
// Zeilen erstellen
for (int i = 0; i <= zerteilen.Length - 1; i++)
{
// leere Zeilen entfernen
if (zerteilen[i] != "")
{
//ergebnis.Append(zerteilen[i] + "");
ergebnis += (zerteilen[i]);
}
}
return ergebnis;
}
Die eingelesene Textdatei befindet sich in der Variable Sammlung.
Nach jedem Trennzeichen | wird eine neue Zeile erzeugt, die dann am Ende
in eine neue Textdatei (zeilenbasiert) geschrieben wird.
Was mache ich falsch?

Gruß
Uwe
 

Lesen sie die antworten

#1 Martin Honnen
05/02/2009 - 17:15 | Warnen spam
Uwe Rossberg wrote:

beim verarbeiten von grossen (ab 10 MB aufwàrts) Textdateien bekomme ich
immer mit folgender Routine einen Speicherfehler (OutOfMemoryException)
string ergebnis = "";

//ergebnis.Append(zerteilen[i] + "");
ergebnis += (zerteilen[i]);
}
}
return ergebnis;
}
Die eingelesene Textdatei befindet sich in der Variable Sammlung.
Nach jedem Trennzeichen | wird eine neue Zeile erzeugt, die dann am Ende
in eine neue Textdatei (zeilenbasiert) geschrieben wird.
Was mache ich falsch?



Statt Konkatenation mittels + solltest du sicher einen StringBuilder
benutzen. Allerdings scheinst du das mit der auskommentierten Zeile
eventuell schon versucht zu haben.
Hast du auch versucht, die extrahierten Daten gleich zeilenweise in eine
Datei zu schreiben, statt sie erst alle zusammenzufügen und dann in eine
Datei zu schreiben? So sollte der Speicherverbrauch sicher geringer sein.




Martin Honnen MVP XML
http://JavaScript.FAQTs.com/

Ähnliche fragen