Visual C#2013 StreamWriter操作不稳定

本文关键字:不稳定 操作 StreamWriter C#2013 Visual | 更新日期: 2023-09-27 18:00:35

我一直在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");
        }
    }

当我用前面的代码运行程序时,文本文件绝对是空的,但它应该是写的。但是,有趣的是,如果我从before文件中删除//。WriteLine("test"+i),然后它就可以毫无问题地写入文件。感谢您的帮助!

Visual C#2013 StreamWriter操作不稳定

我不确定它为什么不起作用——希望其他人对此有所了解。我的直觉是,这与打开/关闭文件的方式有关,然后创建一个新的流,然后创建基于该流的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语句中),那么一切都会正常运行。