お世話になります。
ルートディクトリからの検索処理について質問があります。
任意のフォルダを選択して、そのフォルダの直下(サブも対象)
のファイル情報を取得して、ファイルに保存するプログラムを
作ってます。FindFirstFile関数を用いてますが、
ルートディレクトリ指定時に限っての話ですが、ルート直下の
ファイル及び、ディレクトリしか取得できません。
ルート以外(例:c:\windows)ですと上手くいきます。
原因がわからないので、以下のURLより
http://www.microsoft.com/japan/developer/library/jpwinpf/_win32_findfirstfile.ht
m
>ルートディレクトリ内のファイルを検索するには、この関数で
>C:\* のようなファイル名を指定し、引き続き GetFileAttributes
>関数を・・・
と記述されていますが、正直意味がわかりません。
GetFileAttributesを調べてみてると、ファイルやディレクトリの
属性を返す関数のようですが、これとルートの検索と何の関係が
あるのでしょうか?
指定ディレクトリがルートの場合に限って、まず最初にルート直下
のディレクトリをバッファに退避を行い、退避された情報の数分、
検索関数を呼び出すという作りの方が無難なのでしょうか?
宜しくお願いします。
環境:VC++6.0 MFC WIN98
へたれと申します。
コードを見ないとなんとも言えないんですが、
ルートディレクトリが指定されたときと、
そうでないときのディレクトリの指定方法が
同じだとうまくいきません。
ルートディレクトリ以外なら
(カレントディレクトリ名) + \\ + (FindFirstFile で引っかかったファイル名)
でうまくパスを取得できますが、
ルートディレクトリで同じことをすると
C:\\\\ディレクトリ名
となってしまい、結果的にルートディレクトリのファイルしか
取得できなくなってしまいます。
なので、if文を入れてルートディレクトリと、そうでないときの
パス指定が必要になります。
違ってたらすいませんm(__)m
ご返答ありがとうございます。
>なので、if文を入れてルートディレクトリと、そうで
>ないときのパス指定が必要になります。
検索関数にて検索を行いディレクトリ発見時、当関数
の再帰呼び出しを行うのですが、当関数の引数に検索対象のパス
を設定するのですが、ルートディレクトリ選択時に\を余分に
付けてパス情報を渡してました。
つ、つまんないミスで申し訳ありませんでした。
私も同じことで悩みましたから^^;