C#winform File.Copy从SaveDialog

时间:2018-06-22 09:39:09

标签: c#

我正在尝试使用C#上的mySensor将应用程序目录中的.txt复制或某种导出功能复制到用户想要的路径和文件名,如下所示。

savedialog

但是我遇到了错误

  

不支持给定路径的格式。

我是C#的新手,并且希望了解此错误,此外,我还希望将文件名扩展名默认设置为.txt,任何建议都很好。

1 个答案:

答案 0 :(得分:1)

您需要更改几件事。 首先,当然是您的电话。这行没有道理

File.Copy(directory, Path.GetDirectoryName(dialog.FileName) + dialog.FileName);

dialog.FileName已经包含目标文件的完整文件名。因此,无需提取目录然后再​​次添加所有路径。只写

File.Copy(directory, dialog.FileName);

但是,这可能会导致错误。如果您的用户未将目标文件夹更改为另一个目录怎么办?您最终在要读取的同一文件上进行写。
所以我要像这样添加健全性检查

if(directory == dialog.FileName)
    MessageBox.Show("Copy","Choose a different output folder");
else
    File.Copy(directory, dialog.FileName);

最后,如果要强制输出文件始终具有.TXT扩展名,则可以将此行添加到SaveDialog配置中

// Fix also your filter property. The one you have is invalid
dialog.Filter = "txt files (*.txt)|*.txt";
dialog.FilterIndex = 0;  // 2 ?? There is no index 2 in your filter string
dialog.RestoreDirectory = true;

// Force the .TXT extension
dialog.AddExtension = true;