2010-03-16 3 views
5

Есть ли быстрый способ проверить, есть ли путь, который у меня есть, на локальном диске или где-то в сети? Я не могу просто проверить, не является ли это буквой диска или UNC, потому что это неправильно идентифицирует подключенные диски как локальные. Я предположил, что это будет логическое значение в объекте DirectoryInfo, но похоже, что это не так.Проверьте, является ли папка локальным или сетевым ресурсом в .NET.

Я нашел классический код VB для этой проверки (через API), но пока ничего для .NET.

ответ

6
   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 
       } 
+2

Noce, но "если (Path.IsPathRooted (di.FullName))" кажется совершенно ненужным вообще, поскольку само использование FullName возвращает корневой путь. – Nyerguds

1

Вы можете начать с проверки UNC. Затем, если это не путь UNC, создайте объект DriveInfo для привода и проверьте DriveType.

0

Из буквы диска в пути найдите экземпляр DriveInfo. Это свойство DriveType, которое может быть: CDROM, Fixed, Unknown, Сеть, NoRootDirectory, Ram, съемными или Неизвестный

Смежные вопросы