C# 正在使用streamwriter,但文件始终为空

C# 正在使用streamwriter,但文件始终为空,c#,streamwriter,C#,Streamwriter,我正在使用Streamwriter将列表数据保存到文本文件中,但打开该文件时该文件始终为空。 我可以让列表显示所有的输入,这样列表就工作了。这是filewriter的代码 private void SaveToFile() { string taxpayerLine; string taxpayerFile; string myFileName; FileInfo myFile; SaveFileDialog

我正在使用Streamwriter将列表数据保存到文本文件中,但打开该文件时该文件始终为空。 我可以让列表显示所有的输入,这样列表就工作了。这是filewriter的代码

private void SaveToFile()
    {
        string taxpayerLine;
        string taxpayerFile;
        string myFileName;
        FileInfo myFile;
        SaveFileDialog taxpayerFileChooser;

        StreamWriter fileWriter;


        taxpayerFileChooser = new SaveFileDialog();
        taxpayerFileChooser.Filter = "All text files|*.txt";
        taxpayerFileChooser.ShowDialog();
        taxpayerFile = taxpayerFileChooser.FileName;
        taxpayerFileChooser.Dispose();

        fileWriter = new StreamWriter(taxpayerFile, true);

        foreach (Taxpayer tp in Taxpayers)
        {
            taxpayerLine = tp.Name + "," +
                tp.Salary.ToString() + "," +
                tp.InvestmentIncome.ToString() + "," +
                (tp.InvestmentIncome + tp.Salary).ToString() + "," +
                tp.GetRate().ToString() + "," +
                tp.GetTax().ToString();

            fileWriter.WriteLine(taxpayerLine);
        }

        fileWriter.Close();
        fileWriter.Dispose();

        myFile = new FileInfo(taxpayerFile);
        myFileName = myFile.Name;

        MessageBox.Show("Data Saved to " + myFileName);
    } 

您可以尝试如下更改代码:


using语句在块执行后显式调用一次性对象的Dispose()方法

如果你突破了这个临界点,那么纳税人身上有什么东西吗?你应该对一次性物品使用
语句。但是假设您的代码执行时没有抛出任何异常,那么您的文件可能为空的唯一方式是查看错误的文件,或者
集合为空。代码应该能够处理用户可以按“取消”或关闭对话框而无需选择文件的情况。我修改了答案以进行额外检查。希望有帮助。是的,现在好多了。
private void SaveToFile()
{
    string taxpayerLine;
    string taxpayerFile = string.Empty;
    string myFileName;
    FileInfo myFile;

    using (SaveFileDialog taxpayerFileChooser = new SaveFileDialog())
    {
        taxpayerFileChooser.Filter = "All text files|*.txt";
        if (DialogResult.OK == taxpayerFileChooser.ShowDialog())
        {
            taxpayerFile = taxpayerFileChooser.FileName;
        }
    }

    if (!string.IsNullOrEmpty(taxpayerFile))
    {
        using (StreamWriter fileWriter = new StreamWriter(taxpayerFile, true))
        {
            foreach (Taxpayer tp in Taxpayers)
            {
                taxpayerLine = tp.Name + "," +
                tp.Salary.ToString() + "," +
                tp.InvestmentIncome.ToString() + "," +
                (tp.InvestmentIncome + tp.Salary).ToString() + "," +
                tp.GetRate().ToString() + "," +
                tp.GetTax().ToString();

                fileWriter.WriteLine(taxpayerLine);
            }
        }

        myFile = new FileInfo(taxpayerFile);
        myFileName = myFile.Name;

        MessageBox.Show("Data Saved to " + myFileName);
    }
    else
    {
        MessageBox.Show("Data not saved");
    }
}