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
如何解决这个问题
:
不允许出现在文件名中。你可以把它们去掉
也可以用下划线_
代替空格
问题不在于空格。有几个符号,在命名上是不同的:<
, >
, :
, "
, /
, '
, |
, ?
, *
。您还可以检查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;