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