首页 文章

当文件名包含空格时创建文件时出现C#异常会引发错误{“不支持给定路径的格式 . ”}

提问于
浏览
0

嗯尝试创建一个文件名为pdf的文件,如下所示

Hello 1115 Apple Mango 27.08.2015 00:00:00.pdf

运用

var tempFileName = Fruit.Name + " " + numberName + " " + DateTime.Now.Date.ToString() + ".pdf";

 var pdfFile = Path.Combine(Path.GetTempPath(), tempFileName);
 System.IO.File.WriteAllBytes(pdfFile, Pdfcontent.GetBuffer());

请注意我的文件名包含空格,如果我创建一个没有空格的文件名,它将生成一个没有任何问题的文件

由于它包含空格,因此会引发异常 {"The given path's format is not supported."}

生成的文件路径看起来像这样 C:\Users\Sansa\AppData\Local\Temp\Hello 1115 Apple Mango 27.08.2015 00:00:00.pdf

如何解决这个问题

2 回答

  • 3

    问题不在于空间 . 有一些符号在命名时有所不同: <>:"/\|?* . 您也可以在MSDN上查看naming files and folders的规则 .

    您可以通过将此符号替换为允许来解决此问题 . 在您的情况下,您可以使用简单的 replace

    tempFileName = tempFileName.Replace(':', '_');    // prevent using : symbol
    

    但更好的是获取所有不允许的符号并使用正则表达式来防止使用它们:

    var pattern = new string(Path.GetInvalidFileNameChars()) + new string(Path.GetInvalidPathChars());
    var r = new Regex(string.Format("[{0}]", Regex.Escape(pattern)));
    tempFileName = r.Replace(tempFileName, "_");
    

    如果您选择第二个变体,请不要忘记在文件中添加名称空间:

    using System.IO;
    using System.Text.RegularExpressions;
    
  • 2

    文件名中不允许 : . 你可以删除它们 .

    如果需要,您也可以用下划线 _ 替换空格 .

相关问题