2016-11-10 9 views
1

C#でベットプログラムを作成しようとしていて、ユーザーのデータをtxtファイルに保存しようとしています。私はそれからデータを読むのに何の問題もありません。しかし、私はそれを上書きすることはできません。StreamReaderを呼び出した後にStreamWriterが機能しない

私がテストしたことから、StreamWriterを単独で呼び出すと、上書きはうまくいきます。 StreamReader部分の後に同じコードを置くと、コードはConsole.WriteLine("reached");行に達し、その後ろのすべてを無視します(ユーザー名はコンソールに書き込まれません)。エラーは検出されず、コンパイルも停止しません。

ここでクラスコードです:

class Dinero 
    { 
      private List<string> data; 
      private string path = @"C:\Users\yy\Documents\Visual Studio 2015\Projects\ErikaBot\ErikaBot\img\bank_data.txt"; 

      ... 
      some other methods here 
      ... 

      public void thing(string username, int money) 
      { 
       FileStream fs = new FileStream(path, FileMode.OpenOrCreate, FileAccess.ReadWrite, FileShare.None); 
       data = new List<string>(); 
       using (StreamReader sr = new StreamReader(fs)) 
       { 
        string a = sr.ReadLine(); 
        for (int i = 0; a != null; i++) 
        { 
         if (a != username) 
         { 
          data.Add(a); 
         } 
         else i++; 
         a = sr.ReadLine(); 
        } 
       } 

       string b = Convert.ToString(money); 
       Console.WriteLine("reached"); 
       using (StreamWriter tw = new StreamWriter(fs)) 
       { 
        Console.WriteLine(username); 
        if (data != null) 
        { 
         for (int i = 0; i < data.Count; i++) 
         { 
          tw.WriteLine(data.ElementAt(i)); 
         } 
        } 
        string money2 = Convert.ToString(money); 
        tw.WriteLine(username); 
        tw.WriteLine(money2); 
       } 
      } 
     } 
+1

あなたは 'data'が' null'ではないことを確信していますか?ファイルにデータがあることを意味しますか? –

+0

FileMode.OpenOrCreateの代わりにFileMode.Appendを使用してみてください。 – Harminder

+0

コードがConsole.WriteLine(username)に到達する必要があるため、問題のようには見えません。とにかく – Hammies

答えて

1

のStreamReaderを配置することは、あなたものFileStreamを配置。 StreamWriterのusingステートメントの前にfilestreamの初期化を繰り返すか、後者をStreamReaderのusingステートメントに挿入します。

関連する問題