• ベストアンサー

ディレクトリ探索プログラム

ディレクトリを探索していき、ファイル一覧を表示していくような機能が欲しいのですが、自分でプログラムしたくてもどのように始めればよいのかわからず困っています。後々プログラミングの勉強にも使いたいですのでサンプルのプログラムなどがあれば見せていただきたいです。 できれば C もしくは C++ が希望です。 具体的な内容としましては、 『パソコンのCドライブなどから始めて、その中にあるディレクトリとファイル一覧を表示して、ディレクトリが存在すればその中に入り、またファイルとディレクトリの一覧を表示する。それを繰り返して行き、一番下まで行ったら、ひとつ上の階層に戻り同じことを繰り返す』 という感じです。再帰的なプログラムだと助かりますが、他にもよい方法があれば教えていただきたいです。 宜しくお願いします。

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

  • ベストアンサー
  • furyfox
  • ベストアンサー率56% (58/103)
回答No.2

http://www.doumo.jp/modules/general/CFindFile.html とか参考にしてはどうですか? 再起的に取得するにはFindFirstFile(FindNextFile)で調べたパスを更にGetFileAttributes でディレクトリかファイルを調べ ディレクトリならまた自分自身を呼びます。

butao
質問者

お礼

情報有難う御座います。 とても参考になりました。

その他の回答 (2)

noname#118114
noname#118114
回答No.3

以下のプログラムで出来ます C++Builderでのプログラムです GetDiskSpace(C:\");とすればCドライブを検索してくれます GetDiskSpace(const AnsiString root) { WIN32_FIND_DATA data; HANDLE hFind; hFind = FindFirstFile((root+"*.*").c_str(),&data); if(hFind == INVALID_HANDLE_VALUE) throw Exception(SysErrorMessage(GetLastError())); Application->ProcessMessages(); try { do { if(strcmp(data.cFileName,".")!=0 && strcmp(data.cFileName,"..")!=0) { if(data.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) GetDiskSpace(root+data.cFileName+"\\");//検索ファイルがフォルダ /再帰処理 else //検索ファイルがファイル ここに必要な処理をいれる } } while(FindNextFile(hFind,&data)); } __finally { FindClose(hFind); } }

butao
質問者

お礼

具体的なコードを載せていただき有難う御座います。 ぜひ参考にさせていただきます。

  • taka_tetsu
  • ベストアンサー率65% (1020/1553)
回答No.1

ドライブという単語があるのでWindowsだという想定で。 FindFirstFile FindNextFile この2つのWindowsAPIでファイルの一覧を取得できます。 具体的なコードは、この2つのAPI名と"再帰"のキーワードでgoogle等で検索をかければいろいろと出てきます。 ここのサイトでも、"FindFirstFile"でいろいろ出てきますよ。

butao
質問者

お礼

Windowsで実行したいということを書くのを忘れていました。すみません。 情報ありがとうございました。

関連するQ&A