Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 获取NotSupportedException的原因:不支持给定路径的格式?_C#_.net_Winforms - Fatal编程技术网

C# 获取NotSupportedException的原因:不支持给定路径的格式?

C# 获取NotSupportedException的原因:不支持给定路径的格式?,c#,.net,winforms,C#,.net,Winforms,我创建了这个方法: private string GetDirectoryName(string baseString, string baseName, int startAt) { int i = startAt; while (Directory.Exists(Path.Combine(baseString, baseName + i.ToString("D6")+"_"+DateTime.Now))) {

我创建了这个方法:

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。现在在原始版本中,方法如下:

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);
}
在使用日期时间之前。现在它工作正常,但在添加日期时间之后。现在我得到了一个例外

这是给出异常的目录示例,例如eventDir包含:

该方法创建的目录名为此部分:

Rain event 000001_10/26/2014 8:09:12 AM
可能是2014年8点和12点之后的空间造成了问题?也许目录名应该是这样的:

Rain event 000001_10/26/2014_8:09:12_AM ?
我想做的是,只创建像Rain event 000001、Rain event 000002和Rain event 000003这样的目录,这些目录将给出每个事件和id,因为它是一个事件

因此,也许可以以任何方式添加日期和时间。差不多吧。因此,目录仍将是Rain event 000001,但后面有一些日期和时间id。

它是:字符,在Windows操作系统中是非法的路径字符。看


您还可以调用方法来确定路径字符串中的字符是否无效。

根据Directory.CreateDirectory的MSDN文档,如果目录名包含不属于驱动器标签的冒号,则会引发NotSupportedException。包含日期时间时,在目录名中包含冒号。

使用DateTime会导致目录名包含非法字符,或者可以使用DateTime.Now.ToFileTime,它是当前时间的数字表示形式,如果同时或在循环中执行此操作,则不一定是唯一的

\ / : * ? " < > | 
以上所有内容在文件名中均无效

\ / : * ? " < > |