我需要将数据写入c#中的文件,但不知何故它显示成功,但文件为空

时间:2013-08-09 18:43:50

标签: c#

你好这是我正在尝试的代码: 如果文件存在,则附加到该文件,否则创建一个新文件。我需要逐行写数据

                    FileExists = File.Exists(NewFileName);
                    if (FileExists = false)
                    {
                        using (fs =new FileStream(NewFileName, FileMode.Create))
                        {
                            sw = new StreamWriter(fs);
                            MessageBox.Show(Record);
                            sw.WriteLine(Record);
                            fs.Close();
                        }
                    }
                    else
                    {
                        using (fd = new FileStream(NewFileName, FileMode.Append))
                        {
                            sw = new StreamWriter(fd);
                            MessageBox.Show(Record);
                            sw.WriteLine(Record,true);
                        }
                    }

                }

1 个答案:

答案 0 :(得分:1)

这是因为您的代码永远不会进入FileExists = false分支:这是一项任务,而非比较。

您可以添加额外的=以使其成为比较(即使其成为FileExists == false),但检查条件相反的惯用方法是使用一元运算符!

按如下方式更改条件以使其正常工作:

if (!FileExists)
    ...

此外,您忘记关闭或刷新StreamWriter

您可以使用三元运算符统一两个分支,如下所示:

using (fs =new FileStream(NewFileName, FileExists ? FileMode.Append : FileMode.Create)) {
    sw = new StreamWriter(fs);
    MessageBox.Show(Record);
    sw.WriteLine(Record);
    sw.Close(); // <<== Add this line
    fs.Close();
}