1. ホーム
  2. c#

[解決済み] パスがファイルかディレクトリかを確認する良い方法?

2022-03-23 22:32:54

質問

を処理しています。 TreeView ディレクトリとファイルの ユーザーはファイルまたはディレクトリを選択し、それに対して何かを行うことができます。このため、ユーザーの選択に応じて異なるアクションを実行するメソッドを用意する必要があります。

今のところ、以下のような感じで、パスがファイルなのかディレクトリなのかを判断しています。

bool bIsFile = false;
bool bIsDirectory = false;

try
{
    string[] subfolders = Directory.GetDirectories(strFilePath);

    bIsDirectory = true;
    bIsFile = false;
}
catch(System.IO.IOException)
{
    bIsFolder = false;
    bIsFile = true;
}

もっといい方法があるはずだ!という気がしてなりません。これを処理する標準的な.NETメソッドを見つけたいと思っていたのですが、見つけられませんでした。そのようなメソッドは存在するのでしょうか。存在しない場合、パスがファイルであるかディレクトリであるかを判断する最も簡単な方法は何でしょうか。

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

から パスがファイルかディレクトリかを判断する方法 :

// get the file attributes for file or directory
FileAttributes attr = File.GetAttributes(@"c:\Temp");

//detect whether its a directory or file
if ((attr & FileAttributes.Directory) == FileAttributes.Directory)
    MessageBox.Show("Its a directory");
else
    MessageBox.Show("Its a file");

.NET 4.0+に対応したアップデート

以下のコメントにより、.NET 4.0以降であれば(そして最大のパフォーマンスが重要でなければ)、よりクリーンな方法でコードを記述することができます。

// get the file attributes for file or directory
FileAttributes attr = File.GetAttributes(@"c:\Temp");

if (attr.HasFlag(FileAttributes.Directory))
    MessageBox.Show("Its a directory");
else
    MessageBox.Show("Its a file");