特定のディレクトリがルートドライブであるかどうかを確認するにはどうすればよいですか?
(パスが「A:」、「B:」、「C:」などに等しいかどうかを確認する以外)
DirectoryInfo.Parentがnullかどうかを確認します
DirectoryInfo d = new DirectoryInfo("");
if(d.Parent == null) { IsRoot = true; }
directoryInfo.Rootを使用してルートを取得することもできます。
試してください this :
if (Path.GetPathRoot(location) == location) {...}
Parentプロパティをチェックするよりもはるかに複雑です。
1つのアプローチは、 GetVolumeNameForVolumeMountPoint
が成功するかどうかを確認することです。
もちろん、これはネットワークパスでは機能しません。ネットワークドライブがパーティションのルートディレクトリを表しているかどうかをリモートで判断できない場合があります。
また、私が見つけた別の方法は次のとおりです。
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);
}
これは、指定されたパスが現在のシステムの論理ドライブの1つを表しているかどうかを実際にチェックします。