Существует ли быстрый способ проверить, является ли путь, который я имею, на локальном диске или где-нибудь в сети? Я не могу только проверить, чтобы видеть, является ли это буква диска по сравнению с UNC, потому что это неправильно идентифицировало бы сетевые диски как локальные. Я предположил, что это будет булевская переменная в объекте DirectoryInfo, но кажется, что это не.
Я нашел, что классический код VB делает эту проверку (через API), но ничто для.NET до сих пор.
System.IO.DirectoryInfo di;
if (System.IO.Path.IsPathRooted(di.FullName))
{
System.IO.DriveInfo drive = new System.IO.DriveInfo(System.IO.Path.GetPathRoot(di.FullName));
if (drive.DriveType == System.IO.DriveType.Network)
{
// do something
}
}
else // shouldn't be reached
{
// relative path => local
}
Вы можете начать с проверки UNC. Затем, если это не UNC-путь, создайте объект DriveInfo
для диска и проверьте DriveType
.
Из буквы диска в пути получите экземпляр DriveInfo. Он имеет свойство DriveType, которое может быть: CDRom, Fixed, Unknown, Network, NoRootDirectory, Ram, Removable или Unknown