12

我在这段代码的第三行有一个异常“第二个路径片段不能是驱动器或 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] + @"\");

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

4

3 回答 3

17

我今天遇到了这个,终于找到了。

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

因此包含“C:\”或“D:\”等的路径参数不起作用。有了这个上下文,异常消息实际上有点意义。

在您的代码中,您使用的是 FullName 属性,并且此字符串包含“C:\”或任何根目录。

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

于 2014-04-23T02:04:15.983 回答
6

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

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

foreach(var file in Directory.GetFiles(directory))
{
   File.Delete(file);
}
于 2016-08-31T13:42:50.980 回答
1

解决方案是不要将完整的文件路径放在参数中。

您已经将父目录的路径作为对象,因此您只需将新目录名称作为参数列出。

tld = labdi.CreateSubdirectory(NorA.sn.labl[i]);
于 2021-01-28T20:09:34.587 回答