Out of memory-Ausnahme Lesen und schreiben von text-Datei

Bekomme ich eine out of memory-Ausnahme ein paar Sekunden nach, führe ich den folgenden code. Es muss nicht alles schreiben, bevor die exception geworfen wird. Die text-Datei ist über ein halbes gigabyte groß ist. Die text-Datei Schreibe ich auch am Ende wird etwa 3/4 von einem gigabyte. Gibt es irgendwelche tricks, um zu navigieren um diese Ausnahme? Ich vermute, es ist, weil der text-Datei ist zu groß.

public static void ToCSV(string fileWRITE, string fileREAD)
{
    StreamWriter commas = new StreamWriter(fileWRITE);
    var readfile = File.ReadAllLines(fileREAD);


    foreach (string y in readfile)
    {

        string q = (y.Substring(0,15)+","+y.Substring(15,1)+","+y.Substring(16,6)+","+y.Substring(22,6)+ ",NULL,NULL,NULL,NULL");
        commas.WriteLine(q);
    }

    commas.Close();
}

Habe ich geändert mein code, der dem folgenden doch ich bekomme immer noch die gleiche Exception?

public static void ToCSV(string fileWRITE, string fileREAD)
{
    StreamWriter commas = new StreamWriter(fileWRITE);

    using (FileStream fs = File.Open(fileREAD, FileMode.Open, FileAccess.Read, FileShare.ReadWrite))
    using (BufferedStream bs = new BufferedStream(fs))
    using (StreamReader sr = new StreamReader(bs))
    {
        string y;
        while ((y = sr.ReadLine()) != null)
        {
            string q = (y.Substring(0, 15) + "," + y.Substring(15, 1) + "," + y.Substring(16, 6) + "," + y.Substring(22, 6) + ",NULL,NULL,NULL,NULL");
            commas.WriteLine(q);
        }
    }

    commas.Close();
}
  • Sie sind immer noch die selben Fehler auf Ihrer geänderten code, indem Sie die FileStream in eine BufferedStream. Tun Sie es nicht. Öffnen Sie einfach die Datei mit StreamReader und liest Zeile für Zeile.
InformationsquelleAutor Mitchell | 2014-04-30
Schreibe einen Kommentar