1. ホーム
  2. .net

.NET パスがディレクトリではなくファイルであるかどうかを確認する方法は?

2023-08-21 07:26:40

質問

私はパスを持っており、それがディレクトリまたはファイルであるかを決定する必要があります。

パスがファイルかどうか判断するのに最適な方法はこれですか?

string file = @"C:\Test\foo.txt";

bool isFile = !System.IO.Directory.Exists(file) && 
                         System.IO.File.Exists(file);

ディレクトリの場合、私は逆の論理を使います。

string directory = @"C:\Test";

bool isDirectory = System.IO.Directory.Exists(directory) && 
                            !System.IO.File.Exists(directory);

もし両方が存在しないなら、私はどちらのブランチにも行きません。 そこで、両方が存在すると仮定します。

どのように解決するのですか?

使用します。

System.IO.File.GetAttributes(string path)

で、返された FileAttributes の結果が値 FileAttributes.Directory :

bool isDir = (File.GetAttributes(path) & FileAttributes.Directory)
                 == FileAttributes.Directory;