Второй фрагмент пути не должен быть именем диска или UNC - ошибка создания подкаталога
У меня есть исключение в третьей строке этого кода "Второй фрагмент пути не должен быть именем диска или 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 ответа
Я столкнулся с этим сегодня и наконец разыскал это.
Исключение пытается сообщить вам, что когда DirectoryInfo принимает путь в качестве аргумента (например, CreateSubdirectory или GetFiles), он будет возражать, если аргумент пути содержит Root, и выбрасывает это неуловимое исключение.
Таким образом, аргументы пути, содержащие "C:\" или "D:\" и т. Д., Не работают. Вооруженный этим контекстом, сообщение об исключении на самом деле имеет немного смысла.
В вашем коде вы использовали свойство FullName, и эта строка содержит "C:\" или любой другой корень.
Учитывая возраст вопроса, я должен добавить C#, .NET 4.5, VS2013.
Самым простым решением этой проблемы является использование статической версии методов 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);
}
Решение состоит в том, чтобы не указывать полный путь к файлу в аргументе.
У вас уже есть путь к родительскому каталогу в качестве объекта, поэтому вам нужно только указать имя нового каталога в качестве аргумента.
tld = labdi.CreateSubdirectory(NorA.sn.labl[i]);