0

次のコードは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

4 に答える 4

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

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

2番目のパラメーター(bool append)は、よく説明されています。

append Type:System.Booleanデータをファイルに追加するかどうかを決定します。ファイルが存在し、appendがfalseの場合、ファイルは上書きされます。ファイルが存在し、appendがtrueの場合、データはファイルに追加されます。それ以外の場合は、新しいファイルが作成されます。

于 2012-07-11T14:25:44.320 に答える
2

appendfalseに設定するStreamWriterと、データが追加されるのではなく、ファイルが上書きされます。

StreamWriter myStream = new StreamWriter(dialog.FileName, false);
于 2012-07-11T14:26:13.707 に答える
0

new StreamWriter(dialog.FileName, true) 変更truefalse

Intellisenceは、関数呼び出しを入力するときにパラメーターの名前を教えてくれます。また、パラメーターの意味についてのツールチップを提供する場合があります。あなたはそれに注意を払う必要があります

入力new StreaWriter(dialog.FileName) するだけで、デフォルトでappendがfalseに設定されると思います。

于 2012-07-11T14:27:15.180 に答える
0

適切なパラメーターをコンストラクターに渡します。

new StreamWriter(
    path: path
    append: false);
于 2012-07-11T14:27:20.273 に答える