指定したディレクトリにあるファイル名を取得するには ( ファイルの情報は分かりません ) ?

解決


char *s = "現実逃避";  2005-08-25 14:40:33  No: 58755

指定したディレクトリからファイル名を取得しようと思って、FindFirstFile 関数の第一引数に "?:\\*.*" のように指定すると、ファイル名を取得することができました。 けれども、 "?:\\hoge\\*.*" のように指定すると、ファイル名を取得することができません。 それで、MSDN のライブラリを調べてみると、ルートディレクトリ以外を指定するとディレクトリに関する情報しか取得する事ができないと書いてありました。 "?:\\hoge\\*.txt" のように拡張子からファイル名を取得するのでは無くて、ルートディレクトリと同じように " 指定したディレクトリから全てのファイル名を取得" したいのです。 ワイルドカードには触れた事があまり無かったので、指定の仕方自体が間違えているかもしれませんが、FindFirstFile 関数以外の関数を使用するべきなのでしょうか? よろしければ助言をください。

  OS: Windows XP Home Editon 
  開発環境: VC++ 6.0


char *s = "現実逃避";  2005-08-25 18:01:12  No: 58756

大変ご迷惑をおかけしてすいませんでした。 どうやら、「.」と「..」という不可視のディレクトリが存在するらしく、そのディレクトリ名を取得していて、ファイル名が取得できていないものと誤解していました。 ワイルドカードの指定は間違っていなかったようです。


Anonymous Coward  2005-08-25 20:37:24  No: 58757

'.'はそのディレクトリ自身、'..'は一個上のディレクトリを示すものです。
DOSやらUNIX系を使うと出てきますし、相対パスなどでもよく利用します。
問題は解決しているようですが、一応FYIということで。


RAPT  2005-08-26 07:32:12  No: 58758

補足。

FindFirstFileを使うのであれば、WIN32_FIND_DATA構造体を使いますよね?
WIN32_FIND_DATA::dwFileAttributes をチェックすれば、
その掴んだファイルの属性を確認できます。

dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY
が非0であれば、ディレクトリであるとか。
※詳しくはMSDN参照。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加