为什么我';m正在获取NotSupportedException:给定的路径';不支持s格式
本文关键字:路径 不支持 格式 获取 NotSupportedException 为什么 | 更新日期: 2023-09-27 18:27:47
我创建了这个方法:
private string GetDirectoryName(string baseString, string baseName, int startAt)
{
int i = startAt;
while (Directory.Exists(Path.Combine(baseString, baseName + i.ToString("D6")+"_"+DateTime.Now)))
{
i++;
}
return Path.Combine(baseString, baseName + i.ToString("D6") + "_" + DateTime.Now);
}
我在原始文件中添加了DateTime.Now
,方法如下:
private string GetDirectoryName(string baseString, string baseName, int startAt)
{
int i = startAt;
while (Directory.Exists(Path.Combine(baseString, baseName + i.ToString("D6"))))
{
i++;
}
return Path.Combine(baseString, baseName + i.ToString("D6"));
}
如果需要,我会创建目录:
string eventDir = GetDirectoryName(AnimatedGifDirectory, "Rain event ", 1);
if (!Directory.Exists(eventDir))
{
Directory.CreateDirectory(eventDir);
}
在使用DateTime.Now
之前,它运行良好,但在添加DateTime.Now
之后,我遇到了异常。
这是给出异常的目录的示例,例如eventDir
包含:
C:'test'Rain event 000001_10/26/2014 8:09:12 AM
方法创建的目录名是这一部分:
Rain event 000001_10/26/2014 8:09:12 AM
也许2014年至8点和12点至上午之后的空间会造成问题?也许目录名应该是这样的:
Rain event 000001_10/26/2014_8:09:12_AM ?
我想做的是,只创建像Rain事件000001、Rain事件00000 2和Rain事件0000003这样的目录,因为它是一个event,所以会给每个事件和id。
所以,也许可以以任何方式添加日期和时间。类似的东西。因此,目录仍然是Rain事件000001,但后面有一些日期和时间id。
它是:
字符,在Windows操作系统中是非法的路径字符。请参阅MSDN。
您还可以调用Path.GetInvalidPathChars
方法来确定路径字符串中的字符是否无效。
使用DateTime
会导致目录名出现非法字符,或者您可以使用DateTime.Now.ToFileTime()
,它是当前时间的数字表示(如果同时或循环执行,则不一定是唯一的)。
根据MSDN Directory.CreateDirectory
文档,如果目录名包含不属于驱动器标签的冒号,则会引发NotSupportedException。如果包含DateTime
,则在目录名中包含一个冒号。
' / : * ? " < > |
以上所有内容在文件名中都无效。