我创建了这个方法:
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点到AM之后的空间会出现这个问题?也许目录名称应该是这样的:
Rain event 000001_10/26/2014_8:09:12_AM ?
我想做的是,只创建Rain事件000001和Rain事件000002以及Rain事件000003之类的目录,这些目录将为每个事件和id提供一些事件。
所以也许以某种方式添加日期和时间。这样的事情。所以这些目录仍然是Rain事件000001,但是后面有一些日期和时间id。
答案 0 :(得分:4)
这是:
字符,它是Windows操作系统中的非法路径字符。请参阅MSDN。
您还可以调用Path.GetInvalidPathChars
方法来查明路径字符串中的char是否无效。
答案 1 :(得分:2)
您对DateTime
的使用会导致目录名称成为非法字符,您可以使用DateTime.Now.ToFileTime()
作为当前时间的数字表示(如果您同时执行此操作,则不一定是唯一的)在循环中。)
答案 2 :(得分:1)
根据Directory.CreateDirectory
的MSDN文档,如果目录名称包含不属于驱动器标签的冒号,则抛出NotSupportedException。当您包含DateTime
时,在目录名称中包含冒号。
答案 3 :(得分:0)
\ / : * ? " < > |
以上所有文件名均无效。