2012-02-20 63 views
2

我加了下面这段代码保存按钮:赢形式:SaveFileDialog

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

+0

此代码必须工作。我自己测试过它,它确实有效。 – Jordan 2012-02-20 11:24:58

回答

4

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

+0

它的工作。谢谢。 – Shibli 2012-02-20 11:23:07

0

使用这样的:

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

你能解释为什么你检查空字符串的文件名?从我所知道的,你只能取消对话框,但是你不能点击保存按钮,而实际上并没有把文件名 – Dementic 2015-06-05 10:38:23

+0

也,你似乎没有检查对话框的结果。 – Dementic 2015-06-05 10:38:48

1

你可以简单地使用:

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

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

File.Exist(filePath) 

再见