繁体   English   中英

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)之前删除//,那么它将写入文件而不会出现问题。 任何帮助表示赞赏!

我不确定为什么它不起作用-希望其他人对此有所了解。 我的直觉是与打开/关闭文件,然后创建新的流,然后是基于该流的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");
        }

编辑:我只是重新测试了您的原始代码,并确认了我的怀疑。 如果您在处置流所基于的流之前就对其进行处置(只需将其粘贴在using语句中),则一切将正常运行。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM