创建子目录,从字符串C#设置名称

时间:2014-06-22 00:36:26

标签: c# directory

我想知道如何创建文件夹,文件夹的名称是字符串中的值。

    string[] directories = Directory.GetDirectories(filePath2);
    foreach (string directory in directories)
    {
         Directory.CreateDirectory(filePath + directory);                 
    }

或者

    string[] directories = Directory.GetDirectories(filePath2);
    foreach (string directory in directories)
    {
         Directory.CreateDirectory(filePath + @"/"+directory+"/");                 
    }

抛出NotSupportedException

我该怎么做?

4 个答案:

答案 0 :(得分:2)

根据MSDN(http://msdn.microsoft.com/en-us/library/54a0at6s(v=vs.110).aspx)上的文档,当“路径包含不属于驱动器标签的冒号字符(:)时,会引发NotSupportedException(”C: \“)。”检查字符串的内容。

同样在这方面记住:

  • 创建路径中指定的所有目录,除非它们 已存在或除非路径的某些部分无效。
  • 如果目录已存在,则此方法不会创建新目录 目录,但它返回现有的DirectoryInfo对象 目录。
  • path参数指定目录路径,而不是文件路径。
  • 尾随空格从之前的path参数末尾删除 创建目录。
  • 您可以在远程计算机上,在您的共享上创建目录 有写访问权限。支持UNC路径;例如,你可以 为路径指定以下内容:\ 2009 \ Archives \ December in Visual 基本和\\ 2009 \ Archives \ December in C#。
  • 创建仅包含冒号字符(:)的目录不是 支持,并将导致抛出NotSupportedException。

答案 1 :(得分:1)

问题:如果我理解正确,您想在给定路径下创建目录。

正如其他人已经声明的那样,当冒号NotSupportedException不是驱动器号的一部分时,它会抛出:

来自MSDN: NotSupportedException

  

path包含冒号字符(:),它不是驱动器标签的一部分   (" C:\&#34)。

如果要在给定路径下创建directory,则需要从directory变量中仅提取directory名称(不带驱动器路径),该变量包含整个目录路径,包括你不需要的驱动路径。

解决方案:您只需从DirectoryName变量中提取directory,其中包含整个目录路径(其中还包含驱动路径 - 导致异常)

试试这个:

foreach (string directory in directories)
{
  Directory.CreateDirectory(filePath + @"/" + 
                        directory.Substring(directory.LastIndexOf("\\")) + "/");

}

答案 2 :(得分:0)

MSDN记录可能的异常以及错误条件。

  

<强> NotSupportedException异常

     

path包含一个冒号字符(:),它不是驱动器标签的一部分(&#34; C:\&#34;)。

答案 3 :(得分:0)

正如文件所说

NotSupportedException:path包含不属于驱动器标签的冒号字符(:)(&#34; C:\&#34;)。

看看http://msdn.microsoft.com/en-us/library/9h4z99zb(v=vs.110).aspx