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);
}
}
}
あなたは 'data'が' null'ではないことを確信していますか?ファイルにデータがあることを意味しますか? –
FileMode.OpenOrCreateの代わりにFileMode.Appendを使用してみてください。 – Harminder
コードがConsole.WriteLine(username)に到達する必要があるため、問題のようには見えません。とにかく – Hammies