ルートディクトリ指定時の検索処理

[戻る]
あうあう 2002/11/01(金) 10:14:32
お世話になります。
ルートディクトリからの検索処理について質問があります。
任意のフォルダを選択して、そのフォルダの直下(サブも対象)
のファイル情報を取得して、ファイルに保存するプログラムを
作ってます。FindFirstFile関数を用いてますが、
ルートディレクトリ指定時に限っての話ですが、ルート直下の
ファイル及び、ディレクトリしか取得できません。
ルート以外(例:c:\windows)ですと上手くいきます。
原因がわからないので、以下のURLより

http://www.microsoft.com/japan/developer/library/jpwinpf/_win32_findfirstfile.ht
m

>ルートディレクトリ内のファイルを検索するには、この関数で 
>"C:\*" のようなファイル名を指定し、引き続き GetFileAttributes 
>関数を・・・

と記述されていますが、正直意味がわかりません。
GetFileAttributesを調べてみてると、ファイルやディレクトリの
属性を返す関数のようですが、これとルートの検索と何の関係が
あるのでしょうか?

指定ディレクトリがルートの場合に限って、まず最初にルート直下
のディレクトリをバッファに退避を行い、退避された情報の数分、
検索関数を呼び出すという作りの方が無難なのでしょうか?
宜しくお願いします。

環境:VC++6.0 MFC WIN98

へたれ 2002/11/01(金) 12:01:45
へたれと申します。

コードを見ないとなんとも言えないんですが、
ルートディレクトリが指定されたときと、
そうでないときのディレクトリの指定方法が
同じだとうまくいきません。

ルートディレクトリ以外なら

(カレントディレクトリ名) + "\\" + (FindFirstFile で引っかかったファイル名)

 でうまくパスを取得できますが、
ルートディレクトリで同じことをすると

"C:\\\\ディレクトリ名"

となってしまい、結果的にルートディレクトリのファイルしか
取得できなくなってしまいます。

なので、if文を入れてルートディレクトリと、そうでないときの
パス指定が必要になります。


違ってたらすいませんm(__)m

あう 2002/11/01(金) 12:52:03
[[解決]]
ご返答ありがとうございます。

>なので、if文を入れてルートディレクトリと、そうで
>ないときのパス指定が必要になります。

検索関数にて検索を行いディレクトリ発見時、当関数
の再帰呼び出しを行うのですが、当関数の引数に検索対象のパス
を設定するのですが、ルートディレクトリ選択時に\を余分に
付けてパス情報を渡してました。
つ、つまんないミスで申し訳ありませんでした。

へたれ 2002/11/01(金) 12:55:24
私も同じことで悩みましたから^^;

古いスレッドには追加発言できません。