• ベストアンサー

FindFirstFileについて

いつもお世話になっております。 今日はファイル検索についてお聞きしたいことがあります。 FindFirstFileを使ってフォルダ内のファイルを取得し、表示することを 目的とし、それはできたのですが、ファイルだけでなくフォルダも表示してしまいます。 「.」があるかないかで分別しようと思ったのですが デバッガで見たところフォルダの最後にもなぜか「.」がついていたので どのようにしたらいいか思いつきませんでした。 調べてみたのですが特定の拡張子を表示というものはありましたが フォルダ以外のすべてのファイルを表示したいです。 いいアイデアがありましたらご教授願います。

質問者が選んだベストアンサー

  • ベストアンサー
  • Oh-Orange
  • ベストアンサー率63% (854/1345)
回答No.3

★過去質問より。 ・サブフォルダを検索しない場合は  http://oshiete1.goo.ne.jp/qa3220015.html→『あるディレクトリ内のファイルをファイル名でソートして取得』 ・サブフォルダも検索する場合は  http://oshiete1.goo.ne.jp/qa3230202.html→『デスクトップ上の全ファイル取得』  という感じで行えます。  両方見れば分かりますが次の1行でフォルダとファイルを分岐しています。 >if ( fdFile.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY ){  ↑  ここ。  それから  『.』は自分のディレクトリ・エントリ  『..』は親のディレクトリ・エントリ  を意味しています。  ※あと過去質問やネット検索すると沢山の情報が見つかりますよ。 ・以上。

iec1128
質問者

お礼

サンプルページを教えていただきありがとうございます。 これからは自分で適したものを探せるようがんばります。

すると、全ての回答が全文表示されます。

その他の回答 (2)

回答No.2

ディレクトリを除くのであれば,WIN32_FIND_DATA::dwFileAttributesとFILE_ATTRIBUTE_DIRECTORYのANDをとって,それが0のもののみを表示するようにすればよいです。 ファイル名で判別するのは,対象にディレクトリを含む場合で,TEXT(".")またはTEXT("..")に完全に一致するかどうかの判定だけです。 ディレクトリでないフォルダはFindFirstFileでは出てこないので,上記の方法で全てのファイルを列挙することができます。

iec1128
質問者

お礼

どうやってフォルダ名からはじくかを考えていたので 構造体の中にそういうものがあるとは思わず、 調査不足でした。 ご回答ありがとうございました。

すると、全ての回答が全文表示されます。
回答No.1

WIN32_FIND_DATA のメンバ: dwFileAttributes で判別できます。マニュアル(MSDN)を読んでください。

iec1128
質問者

お礼

どうやってフォルダ名からはじくかを考えていたので 構造体の中にそういうものがあるとは思わず、 調査不足でした。 ご回答ありがとうございました。

すると、全ての回答が全文表示されます。

関連するQ&A