いつもお世話になっております。
あるフォルダ以下にあるフォルダ名をすべて持ってきたいと
思っています。
FindFirstFile・FindNextFileを使用してフォルダ名を得る方法は
わかるのですが、このときにフォルダ名とファイル名の区別のつけ方
がわかりません。
拡張子があるかないかを調べるしかないのでしょうか?
おわかりになられる方がいらっしゃいましたら教えてください。
開発環境 Win2000・VS6SP5
拡張子は関係ないかと。
FindFirstFile() や FindNextFile() で得られる WIN32_FIND_DATA 構造体
の解説を読むと先が開けると思います。
また、_access() とか PathIsDirectory() などを使う方法もありますね。
HANDLE FindFirstFile(
LPCTSTR lpFileName,
LPWIN32_FIND_DATA lpFindFileData
);
ですよね?
typedef struct _WIN32_FIND_DATA { // wfd
DWORD dwFileAttributes;
(中略)
} WIN32_FIND_DATA;
dwFileAttributes
FILE_ATTRIBUTE_DIRECTORY The handle identifies a directory.
は参考になりますか?
既にレス付いていますが…折角なので(笑)
> あるフォルダ以下にあるフォルダ名をすべて持ってきたいと
> 思っています。
> FindFirstFile・FindNextFileを使用してフォルダ名を得る方法は
> わかるのですが、このときにフォルダ名とファイル名の区別のつけ方
> がわかりません。
FindFirstFile()/FindNextFile()で渡すWIN32_FIND_DATA構造体を見てみましょう。
構造体のメンバにdwFileAttributesがあります。
このメンバとFILE_ATTRIBUTE_DIRECTORYが設定されていれば、ディレクトリというコトになり
ます。
注意点として…FILE_ATTRIBUTE_DIRECTORYの値がそのまま入っているワケでは無いので
ビット演算して判定して下さい。
# 不可視属性のついたディレクトリだとFILE_ATTRIBUTE_DIRECTORYと
FILE_ATTRIBUTE_HIDDENが設定されている。
karabiner様 tib様 瀬戸っぷ様
返信ありがとうございました。
WIN32_FIND_DATAのdwFileAttributesを見ることで区別できました。
ありがとうございました。