web-dev-qa-db-ja.com

C#特定のパスがルートドライブを表すかどうかを知る方法は?

特定のディレクトリがルートドライブであるかどうかを確認するにはどうすればよいですか?

(パスが「A:」、「B:」、「C:」などに等しいかどうかを確認する以外)

29
asmo

DirectoryInfo.Parentがnullかどうかを確認します

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

directoryInfo.Rootを使用してルートを取得することもできます。

33
Dustin Davis

試してください this

if (Path.GetPathRoot(location) == location) {...}
6
Brandon

Parentプロパティをチェックするよりもはるかに複雑です。

ディレクトリがマウントされたフォルダであるかどうかの判断

1つのアプローチは、 GetVolumeNameForVolumeMountPoint が成功するかどうかを確認することです。

もちろん、これはネットワークパスでは機能しません。ネットワークドライブがパーティションのルートディレクトリを表しているかどうかをリモートで判断できない場合があります。

6
Ben Voigt

また、私が見つけた別の方法は次のとおりです。

 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つを表しているかどうかを実際にチェックします。

1
asmo