【问题标题】:Win Form: SaveFileDialog获胜形式:SaveFileDialog
【发布时间】:2013-07-02 22:20:04
【问题描述】:

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

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。那么,如果文件不存在,它不应该创建文件吗?

【问题讨论】:

  • 此代码必须有效。我自己测试过,它确实有效。

标签: c# savefiledialog


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    你可以简单地使用这个:

    File.WriteAllText(saveFileDialog1.FileName, twexit.Text);
    

    而不是大量带有流的代码。它创建新文件或覆盖它。 File 是 System.Io 的类。如果要说文件是否存在,请使用

    File.Exist(filePath)
    

    再见

    【讨论】:

      【解决方案3】:

      这样使用:

           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();
      

      【讨论】:

      • 您能解释一下为什么要检查文件名中的空字符串吗?据我所知,您只能取消对话框,但如果不实际输入文件名,则无法单击“保存”按钮
      • 另外,您似乎没有检查对话结果。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-10-13
      • 1970-01-01
      • 1970-01-01
      • 2020-03-06
      • 2010-12-24
      相关资源
      最近更新 更多