将Stream.Write保存到现有.CSV文件不会替换数据,只会添加到现有数据。我如何只替换数据?

时间:2012-07-11 14:23:55

标签: c# .net stream savefiledialog

以下代码用于保存CSV字符串,但是,如果我保存到现有的.CSV,而不是替换数据,它只会将新字符串添加到已存在的数据中。 我该如何解决这个问题?它是Stream.Write函数如何工作的固有内容,还是Excel和.CSV的特质?

SaveFileDialog dialog = new SaveFileDialog();

dialog.AddExtension = true;
dialog.Filter = "CSV Files (*.csv)|*.csv|All Files (*.*)|*.*";
dialog.FilterIndex = 1;
dialog.Title = "Save As";
dialog.InitialDirectory = "C:\\";
dialog.CheckPathExists = true;
dialog.DefaultExt = ".csv";
dialog.ValidateNames = true;

if (dialog.ShowDialog() == DialogResult.OK)
{
    StreamWriter myStream = new StreamWriter(dialog.FileName, true);
    myStream.Write(//Function which returns a CSV-formmatted string//);
    myStream.Close();
    OpenFile(dialog.FileName);
}

4 个答案:

答案 0 :(得分:4)

StreamWriter myStream = new StreamWriter(dialog.FileName, false);

http://msdn.microsoft.com/library/36b035cb%28v=vs.100%29

第二个参数(bool append),有很好的描述:

  

追加       键入:System.Boolean       确定是否将数据附加到文件。如果文件存在且append为false,则覆盖该文件。如果是文件   exists和append为true,数据将附加到文件中。   否则,将创建一个新文件。

答案 1 :(得分:2)

append设置为false,这样,StreamWriter将覆盖该文件,而不是将数据附加到该文件。

StreamWriter myStream = new StreamWriter(dialog.FileName, false);

答案 2 :(得分:0)

new StreamWriter(dialog.FileName, true)中将true更改为false

Intellisence将告诉您在键入函数调用时命名的参数,它可能会为您提供有关其含义的工具提示。你应该注意那个

我相信只需输入new StreaWriter(dialog.FileName),默认情况下就会将其设置为false。

答案 3 :(得分:0)

将适当的参数传递给constructor

new StreamWriter(
    path: path
    append: false);