Сбой StreamWriter с большими текстовыми файлами в C # - PullRequest
0 голосов
/ 11 ноября 2011

Я использую StreamWriter для записи в файл.Когда я использую текст с текстом из 10-50 слов, он работает правильно.Однако, когда я снова вызываю функцию (она превышает 50 слов), происходит сбой.Почему это происходит?Есть предложения?

Вот коды:

StreamWriter file = new StreamWriter("text6.txt");
file.Close();

        int count = 0;
        string temp = "";
        string temp2 = "";

        for (Match m = Regex.Match(str, qmatch2); m.Success; m = m.NextMatch())
        {
            temp = m.Value;
            temp2 = Regex.Replace(temp, qmatch2, " . ");
            str = Regex.Replace(str, temp, temp2);
        }

if (temp.Contains(".") == false)
            {
                file = File.AppendText("text6.txt");
                file.WriteLine(" " + temp);
                count++;
                file.Close();
            }

Ответы [ 2 ]

3 голосов
/ 11 ноября 2011

Попробуйте вместо этого. Вам нужно только создать свой StreamWriter непосредственно перед его использованием, и заверните его в блок using, чтобы поток удалялся сразу после того, как вы его закончили.

    int count = 0;
    string temp = "";
    string temp2 = "";

    for (Match m = Regex.Match(str, qmatch2); m.Success; m = m.NextMatch())
    {
        temp = m.Value;
        temp2 = Regex.Replace(temp, qmatch2, " . ");
        str = Regex.Replace(str, temp, temp2);
    }

    if (temp.Contains(".") == false)
    {
        using (var file = new StreamWriter("text6.txt"))
        {
            file.Write("text6.txt");
            file.WriteLine(" " + temp);                    
        }
        count++;
    } 
0 голосов
/ 11 ноября 2011

Попробуйте это:

StreamWriter file;
try
{
     file = new StreamWriter("text6.txt");
     file.Close();
}
catch(Exception)
{
     throw;
}
...