C# Win表单:SaveFileDialog

C# Win表单:SaveFileDialog,c#,savefiledialog,C#,Savefiledialog,我在保存按钮中添加了以下代码: if (saveFileDialog1.ShowDialog() == DialogResult.OK) { FileStream fs = new FileStream(saveFileDialog1.FileName, FileMode.Create); StreamWriter writer = new StreamWriter(fs); writer.Write(twexit.Text);

我在保存按钮中添加了以下代码:

if (saveFileDialog1.ShowDialog() == DialogResult.OK)
{                
    FileStream fs = new FileStream(saveFileDialog1.FileName, FileMode.Create);
    StreamWriter writer = new StreamWriter(fs);
    writer.Write(twexit.Text);       // twexit is previously created  
    writer.Close();
    fs.Close();
}
当我键入文件名并单击“保存”时,它表示该文件不存在。我知道它不存在,但我设置了
FileMode.Create
。因此,如果文件不存在,是否应该创建该文件?

SaveFileDialog
中有一个选项,如果所选文件不存在,该选项将导致对话框显示该消息。您应该将此设置保留为false(这是默认值)。

如下使用:

     SaveFileDialog dlg = new SaveFileDialog();

        dlg.Filter = "csv files (*.csv)|*.csv";
        dlg.Title = "Export in CSV format";

        //decide whether we need to check file exists
        //dlg.CheckFileExists = true;

        //this is the default behaviour
        dlg.CheckPathExists = true;

        //If InitialDirectory is not specified, the default path is My Documents
        //dlg.InitialDirectory = Application.StartupPath;

        dlg.ShowDialog();
        // If the file name is not an empty string open it for saving.
        if (dlg.FileName != "")

        //alternative if you prefer this
        //if (dlg.ShowDialog() == System.Windows.Forms.DialogResult.OK
            //&& dlg.FileName.Length > 0)

        {
            StreamWriter streamWriter = new StreamWriter(dlg.FileName);
            streamWriter.Write("My CSV file\r\n");
            streamWriter.Write(DateTime.Now.ToString());
            //Note streamWriter.NewLine is same as "\r\n"
            streamWriter.Write(streamWriter.NewLine);
            streamWriter.Write("\r\n");
            streamWriter.Write("Column1, Column2\r\n");
            //…
            streamWriter.Close();
        }

        //if no longer needed
        //dlg.Dispose();

您可以简单地使用:

File.WriteAllText(saveFileDialog1.FileName, twexit.Text);
而不是大量使用流的代码。它可以创建新文件或覆盖它。 文件是System.Io的类。如果要说明文件是否存在,请使用

File.Exist(filePath)

再见

此代码必须有效。我自己做过测试,确实有效。你能解释一下为什么要检查文件名中的空字符串吗?据我所知,您只能取消对话框,但如果不实际输入文件名,则无法单击“保存”按钮。此外,您似乎没有检查对话框结果。