Проверьте, является ли папка локальным или сетевым ресурсом в .NET - PullRequest
5 голосов
/ 16 марта 2010

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

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

Ответы [ 3 ]

6 голосов
/ 16 марта 2010
                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
                }
1 голос
/ 16 марта 2010

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

0 голосов
/ 16 марта 2010

Из буквы диска в пути получите экземпляр DriveInfo. У него есть свойство DriveType, которое может быть: CDRom, Fixed, Unknown, Network, NoRootDirectory, Ram, Removable или Unknown

...