Visual C# 2013 StreamWriter 行为不稳定
Visual C# 2013 StreamWriter acting erratically
我在 Visual Studio 2013 年一直在做一个小项目,我 运行 遇到了写入文本文件的最奇怪的问题。这是我的代码:
private void btnSave_Click(object sender, EventArgs e) {
File.Create(fileName).Close(); //Create/Overwrite file and close it.
using (Stream stream = File.Open(fileName, FileMode.Open)) { //Opens the file and creates a Stream, closes the file once finished.
StreamWriter file = new StreamWriter(stream);
file.WriteLine("teststart");
for (int i = 0; i < CHECK_BOX_COUNT; i++) {
//file.WriteLine("test" + i);
if (checkBoxes[i].Checked)
file.WriteLine("t");
else
file.WriteLine("f");
}
file.WriteLine("testend");
}
}
当我运行上面代码的程序时,文本文件是空的,但它应该写。但是,有趣的是,如果我从 file.WriteLine("test" + i) 之前删除 //,那么它会毫无问题地写入文件。
任何帮助表示赞赏!
我不确定它为什么不起作用 - 希望其他人对此有所了解。我的直觉是,这与您 opening/closing 文件的方式有关,然后创建一个新流,然后是基于该流的 StreamWriter。
一个潜在的问题是您没有处理 StreamWriter 对象,只是处理了底层流。 StreamWriter 也应该被处理掉。
这是我刚刚测试过的修改版本,它对我有用:
using (StreamWriter file = new StreamWriter(fileName, false))
{ //Opens the file and creates a Stream, closes the file once finished.
file.WriteLine("teststart");
for (int i = 0; i < checkBoxes.Count; i++)
{
//file.WriteLine("test" + i);
if (checkBoxes[i].Checked)
file.WriteLine("t");
else
file.WriteLine("f");
}
file.WriteLine("testend");
}
编辑:我刚刚重新测试了您的原始代码并证实了我的怀疑。如果您在处理它所基于的流之前处理您的 StreamWriter(只需将其粘贴在 using 语句中),一切都会正常运行。
我在 Visual Studio 2013 年一直在做一个小项目,我 运行 遇到了写入文本文件的最奇怪的问题。这是我的代码:
private void btnSave_Click(object sender, EventArgs e) {
File.Create(fileName).Close(); //Create/Overwrite file and close it.
using (Stream stream = File.Open(fileName, FileMode.Open)) { //Opens the file and creates a Stream, closes the file once finished.
StreamWriter file = new StreamWriter(stream);
file.WriteLine("teststart");
for (int i = 0; i < CHECK_BOX_COUNT; i++) {
//file.WriteLine("test" + i);
if (checkBoxes[i].Checked)
file.WriteLine("t");
else
file.WriteLine("f");
}
file.WriteLine("testend");
}
}
当我运行上面代码的程序时,文本文件是空的,但它应该写。但是,有趣的是,如果我从 file.WriteLine("test" + i) 之前删除 //,那么它会毫无问题地写入文件。 任何帮助表示赞赏!
我不确定它为什么不起作用 - 希望其他人对此有所了解。我的直觉是,这与您 opening/closing 文件的方式有关,然后创建一个新流,然后是基于该流的 StreamWriter。
一个潜在的问题是您没有处理 StreamWriter 对象,只是处理了底层流。 StreamWriter 也应该被处理掉。
这是我刚刚测试过的修改版本,它对我有用:
using (StreamWriter file = new StreamWriter(fileName, false))
{ //Opens the file and creates a Stream, closes the file once finished.
file.WriteLine("teststart");
for (int i = 0; i < checkBoxes.Count; i++)
{
//file.WriteLine("test" + i);
if (checkBoxes[i].Checked)
file.WriteLine("t");
else
file.WriteLine("f");
}
file.WriteLine("testend");
}
编辑:我刚刚重新测试了您的原始代码并证实了我的怀疑。如果您在处理它所基于的流之前处理您的 StreamWriter(只需将其粘贴在 using 语句中),一切都会正常运行。