第二个路径片段不能是驱动器或UNC名称 - 创建子目录错误

时间:2013-09-03 16:04:20

标签: c# .net directory subdirectory directoryinfo

我在此代码的第三行有一个例外“第二个路径片段不能是驱动器或UNC名称”

DirectoryInfo labdi = new DirectoryInfo(Back.mainfolderpath + @"\news\l");
DirectoryInfo tld = new DirectoryInfo(labdi.FullName + @"\" + NorA.sn.labl[i]);
tld = labdi.CreateSubdirectory(labdi.FullName + @"\" + NorA.sn.labl[i] + @"\");

网上没有有用的方法。 谢谢。:!

3 个答案:

答案 0 :(得分:13)

我今天碰到了这个,最后跟踪了它。

该异常试图告诉您,当DirectoryInfo将路径作为参数(例如,CreateSubdirectory或GetFiles)时,如果path参数包含Root并且抛出这个难以捉摸的异常,它将反对。

所以路径参数包含" C:\"或者" D:\"等不起作用。有了这个上下文,异常消息实际上有点意义。

在您的代码中,您使用的是FullName属性,此字符串包含" C:\"或根本不是什么。

考虑到问题的年龄,我应该添加c#,.NET 4.5,VS2013。

答案 1 :(得分:5)

解决此问题的最简单方法是使用Directory和File方法的静态版本。您不必以这种方式删除root。您也不需要DirectoryInfo或FileInfo对象,它们让您头疼

string someFile = @"C:\somefolder\somefile.txt";
string directory = Path.GetDirectoryName(someFile);

foreach(var file in Directory.GetFiles(directory))
{
   File.Delete(file);
}

答案 2 :(得分:1)

解决办法是不要把完整的文件路径放在参数中。

你已经有父目录的路径作为对象,所以你只需要列出新的目录名称作为参数。

tld = labdi.CreateSubdirectory(NorA.sn.labl[i]);