调用 StreamReader 后,C# StreamWriter 将无法工作
C# StreamWriter won't work after calling StreamReader
我正在尝试用 C# 编写投注程序,将用户数据存储在 txt 文件中。我从中读取数据没有问题。但是,我无法覆盖它。
根据我的测试,如果我单独调用 StreamWriter 部分,覆盖就会发生。当我在 StreamReader 部分之后放置相同的代码时,代码将到达 Console.WriteLine("reached");
行并忽略它之后的所有内容(用户名永远不会写入控制台)。没有检测到错误,编译也不会停止。
这是 class 代码:
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);
}
}
}
通过处置 StreamReader,您也处置了 FileStream。
在 StreamWriter 的 using 语句之前重复文件流初始化,或者将后者放在 StreamReader 的 using 语句中。
我正在尝试用 C# 编写投注程序,将用户数据存储在 txt 文件中。我从中读取数据没有问题。但是,我无法覆盖它。
根据我的测试,如果我单独调用 StreamWriter 部分,覆盖就会发生。当我在 StreamReader 部分之后放置相同的代码时,代码将到达 Console.WriteLine("reached");
行并忽略它之后的所有内容(用户名永远不会写入控制台)。没有检测到错误,编译也不会停止。
这是 class 代码:
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);
}
}
}
通过处置 StreamReader,您也处置了 FileStream。 在 StreamWriter 的 using 语句之前重复文件流初始化,或者将后者放在 StreamReader 的 using 语句中。