C # Как узнать, представляет ли данный путь корневой диск? - PullRequest
25 голосов
/ 19 февраля 2011

Как узнать, является ли данный каталог корневым диском?

(кроме проверки, равен ли его путь A:1003 *

Ответы [ 5 ]

31 голосов
/ 19 февраля 2011

Проверьте, является ли DirectoryInfo.Parent нулевым или нет

DirectoryInfo d = new DirectoryInfo("");
if(d.Parent == null) { IsRoot = true; }

, вы также можете получить root с помощью DirectoryInfo.Root;

6 голосов
/ 19 февраля 2011

Это намного сложнее, чем проверка свойства Parent.

Определение того, является ли каталог подключенной папкой

Один из подходов состоит в том, чтобы посмотреть, удастся ли GetVolumeNameForVolumeMountPoint.

Конечно, это не будет работать для сетевого пути, определение, является ли сетевой диск корневым каталогом раздела, может быть невозможно удаленно.

5 голосов
/ 19 февраля 2011

Попробуйте это :

if (Path.GetPathRoot(location) == location) {...}
2 голосов
/ 16 октября 2014

Также вот еще один способ, который я нашел:

 public static bool IsLogicalDrive(string path)
 {
     return (new DirectoryInfo(path).FullName == new DirectoryInfo(path).Root.FullName;
 }

если эта функция возвращает true, то это означает, что данный путь представляет корневой диск!

1 голос
/ 24 февраля 2011

Вот еще один способ, который я нашел:

public static bool IsLogicalDrive(string path)
{
    return Directory.GetLogicalDrives().Contains(path);
}

Этот файл фактически проверяет, представляет ли данный путь один из логических дисков текущей системы.

...