ページ 11

ファイルの属性の見分け方

Posted: 2005年9月10日(土) 13:33
by ケースケ
こんにちは。いつもお世話になります。

ファイルのパスがディレクトリかファイルか、確実に判断したいのですが、何かよい方法はないでしょうか?

GetFileAttributesでファイルの属性を求めたとしても、「別のドライブに移された読み取り専用の属性のディレクトリ」など、属性がいくつもあるファイルでは確実にディレクトリである、と言う事を判断する方法が分かりませんでした。

他にも、GetCompressedFileSizeでディスク上のファイルサイズを求めて、ディレクトリなら失敗するかな?と思ったのですが、0が返ってきて、判断できませんでした。

_splitpathで、拡張子のないパスをディレクトリと判断しようかとも思いましたが、System32フォルダの中で時々拡張子なしのファイルを見かけるので、あまり確実性が無い気がします。


確実に、ディレクトリとファイルを見分ける方法があれば、教えてください。
ウインドウにドロップされた物がファイルかディレクトリかで、処理を変化させたいと思っうので。
どうかよろしくお願いします。

Re: ファイルの属性の見分け方

Posted: 2005年9月10日(土) 13:58
by hira
ファイル名が "test" のとき、
(GetFileAttributes("test") And FILE_ATTRIBUTE_DIRECTORY) が0ならファイル、それ以外はフォルダと判別することができます。
GetFileAttributes関数のヘルプに、
>属性は、以下の定数の組み合わせで指定されます。
とありますが、こう書いてある場合には、And演算子でそれぞれの要素が含まれるかどうかを調べることができます。
反対に、
>以下の定数を組み合わせて指定します。
となっている場合は、それらをすべてOr演算子でつなげて指定すればいいわけです。

ありがとうございます

Posted: 2005年9月12日(月) 09:13
by ケースケ
そうやって見分けるんですね。
Orで連結して指定するから、てっきり戻り値もOrで連結されていると信じていました。


ありがとうございました。