1

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

                    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);
                        }
                    }

                }
4

1 回答 1

1

这是因为你的代码永远不会进入FileExists = false分支:它是一个赋值,而不是一个比较。

您可以添加额外=内容以使其成为比较(即 make it 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();
}
于 2013-08-09T18:45:29.947 回答