Ответ 1
Проверьте, имеет ли каталог Directory.Parent значение null или нет
DirectoryInfo d = new DirectoryInfo("");
if(d.Parent == null) { IsRoot = true; }
вы также можете получить корень с помощью DirectoryInfo.Root;
Как узнать, является ли данный каталог корневым диском?
(кроме проверки, если его путь равен "A:", "B:", "C:" и т.д.)
Проверьте, имеет ли каталог Directory.Parent значение null или нет
DirectoryInfo d = new DirectoryInfo("");
if(d.Parent == null) { IsRoot = true; }
вы также можете получить корень с помощью DirectoryInfo.Root;
Это намного сложнее, чем проверка свойства Parent.
Определение того, является ли каталог прикрепленной папкой
Один из подходов - проверить, успешно ли GetVolumeNameForVolumeMountPoint
.
Конечно, это не будет работать для сетевого пути, и определить, может ли сетевой диск представлять корневую директорию раздела, возможно, не удастся удаленно.
Попробуйте this:
if (Path.GetPathRoot(location) == location) {...}
Также здесь был найден другой способ:
public static bool IsLogicalDrive(string path)
{
return (new DirectoryInfo(path).FullName == new DirectoryInfo(path).Root.FullName;
}
если эта функция возвращает true, значит, данный путь представляет собой корневой диск!
Здесь я нашел другой способ:
public static bool IsLogicalDrive(string path)
{
return Directory.GetLogicalDrives().Contains(path);
}
Это фактически проверяет, является ли данный путь одним из текущих системных логических дисков.