c#异常创建文件名有空格时抛出错误{"给定路径's格式不支持."}

本文关键字:quot 路径 不支持 格式 文件名 创建 异常 空格 错误 出错 | 更新日期: 2023-09-27 18:10:11

尝试创建一个文件名如下的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());

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

由于它包含空格,它抛出一个异常{"给定路径的格式不受支持。"}

生成的文件路径如下所示C:'Users'Sansa'AppData'Local'Temp'Hello 1115 Apple Mango 27.08.2015 00:00:00.pdf

如何解决这个问题

c#异常创建文件名有空格时抛出错误{"给定路径's格式不支持."}

:不允许出现在文件名中。你可以把它们去掉

也可以用下划线_代替空格

问题不在于空格。有几个符号,在命名上是不同的:<, >, :, ", /, ', |, ?, *。您还可以检查MSDN上文件和文件夹的命名规则。

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

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

但是更好的方法是获取所有不允许使用的符号,并使用Regex来防止使用它们:

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;