2011-11-11 7 views
-2

StreamWriterを使用してファイルに書き込みます。 10-50語のテキストのテキストを使用すると、正しく動作します。しかし、私は関数を再度呼び出すと(それは50単語を超える)、クラッシュします。なぜこうなった?助言がありますか?ここでStreamWriterがC#の大きなテキストファイルでクラッシュする

はコードです:

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(); 
      } 
+0

あなたが話している問題を引き起こすコード例がありますか? –

+0

StreamWriterをtry/catchブロックでラップしましたか?どのような例外がスローされますか? –

+3

"50ワードを超えています" - それは '大きい'ではありません –

答えて

-3

はこれを試してみてください:

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

それは私のために働いた、ありがとう。 – LuckySlevin

+3

これはまったく何もしません... –

+0

@HenkHolterman私はちょうど提案をし、それはユーザーのために働いた。問題? – LuckySlevin

3

ではなく、これを試してみてください。 StreamWriterを使用する直前にStreamWriterを作成し、ブロックusingにラップするだけで、StreamWriterを使用した直後にストリームが破棄されます。

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++; 
    } 
関連する問題