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

本文关键字:文件 何故 成功 显示 一个 数据 | 更新日期: 2023-09-27 18:27:00

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

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

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

这是因为您的代码从未进入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();
}