文件保存对话框与不存在的路径?

时间:2014-08-01 13:12:41

标签: c# io savefiledialog

我在使用SaveFileDialog进行IO处理时出现问题。正如您将在我的以下解决方案中看到的,我打开Dialog并尝试使用ExportTXT / ExportCSV方法保存文件。现在的问题是直接在Dialog中键入Path,就像在资源管理器中那样:

  

C:\程序\ FolderThatDoesntExist \ ERRORS.TXT

我总是得到警告:路径不可用。请检查并再试一次!!!!

我真的不明白,因为:

   dlg.CheckPathExists = false;

   property is set to false!

    private void ExportToFile_Click(object sender, EventArgs e)
    {
         SaveFileDialog dlg = new SaveFileDialog();
         dlg.FileName = "Errors"; // Default file name
         dlg.DefaultExt = ".csv"; // Default file extension
         dlg.OverwritePrompt = true;
         dlg.CheckPathExists = false;
         dlg.AddExtension = true;
         dlg.Filter = "CSV Files (*.csv)|*.csv|Text documents (.txt)|*.txt"; // Filter files by extension
         dlg.FileOk += dlg_FileOk;
         // Show save file dialog box
         dlg.ShowDialog();
    }

    void dlg_FileOk(object sender, CancelEventArgs e)
    {
         // Process save file dialog box results
         var extension = Path.GetExtension(((SaveFileDialog)sender).FileName);
         switch (extension.ToLower())
         {
             case ".txt":
                  exportTXT(((SaveFileDialog)sender).FileName);
                  break;
             case ".csv":
                  exportCSV(((SaveFileDialog)sender).FileName);
                  break;
             default:
                  exportTXT(((SaveFileDialog)sender).FileName);
                  break;
          }
    }

此方法始终由Export方法调用,并应确保将创建目录。

    private void checkDir(string filename)
    {
         string path = Path.GetDirectoryName(filename);
         if (!Directory.Exists(path))  // if it doesn't exist, create
         {
             Directory.CreateDirectory(path);
         }
    }

1 个答案:

答案 0 :(得分:0)

这是人们通常习惯的一般观点:

  1. 有一个文本框,用户可以通过键入,粘贴或其他方式输入路径。

  2. 旁边有一个Browse按钮(或简称为...),会打开SaveFileDialog并提示输入位置。

  3. 当您继续操作时,如果文件夹不存在并创建,您可以警告您的用户,或者只是自动创建它。但我更喜欢前一种方法,因为它会阻止你的应用在错别字的情况下创建错误的文件夹。

  4. enter image description here

    或者,您可以提供FolderBrowserDialog,然后让您的用户选择特定的文件夹。