- ベストアンサー
ファイルの列挙
拡張子を指定してPC内のファイルをすべて調べるには、どのようにすれば良いのでしょうか? ご教授お願いします。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
#4さんへ 配列に収めたら、もちろんできるけど、それはDIRの再帰法ではないのでは・・・ 例1. Sub 再帰関数(inディレクトリ){ 《DIR関数を利用したinディレクトリ内の、サブディレクトリループ》 { CALL 再帰関数(サブディレクトリ)として再起 } } 例2. Sub 再帰関数(inディレクトリ){ 《DIR関数を利用したinディレクトリ内の、サブディレクトリループ》 { 配列に記憶 } 《記憶した配列ループ》 { CALL 再帰関数(サブディレクトリ)として再起 } } 例1.DIRの再帰法(DIRの中でDIRを利用しているから) 例2.DIRを利用しているけど、DIRの再起法ではなく、単なるDIRを利用している関数の再起法。 #3での発言は、#2さんが >Dir()を再帰的に使う方法がセオリー っというのがあり、おそらく例1の方法を示していると思っての発言です。 以前に同様の質問をした人が、その手法でできないと嘆いていた履歴があったので、書いたまでです。 >Win32API呼び出し利用禁止、もしくは承認を得たWin32APIしか利用してはいけない、なんて会社もありますし たしかに、、、こういう会社は、会社そのものが痛い。。。 プロジェクトによって「将来、新人が担当する恐れがあるから」とかならまだしも、、、 「会社の誰もわからないから」とかいうとこもありますしね。。。
その他の回答 (4)
- BellBell
- ベストアンサー率54% (327/598)
横槍です Dirで返るファイル/フォルダ名がなくなるまですべて列挙。配列に叩き込む。(注:".",".."名称も返るが、その場合は無視) GetAttrを使用して、配列に叩き込んだファイル名/フォルダ名のうち、ディレクトリ属性を持つもののみを引数に、再帰呼び出しする。 という手順でも無理?<#3 ま、手間が掛かる上に遅い、冗長でコードが読みづらいなどの欠点があるため、当方も基本的にやりはしないし、Win32APIを利用できる前提ではお勧めはしないが無理ではない。 (未だにWin32API呼び出し利用禁止、もしくは承認を得たWin32APIしか利用してはいけない、なんて会社もありますし)
- 2ch
- ベストアンサー率51% (64/125)
DIRの再帰法は無理よ
- piyo2000
- ベストアンサー率49% (144/293)
VB6でしょうか? だったら、Dir()を再帰的に使う方法がセオリーですが、サブフォルダの検索が面倒であまり良い方法とはいえませんね(^^; FindFirstFile()やFindFirstFileEx()というAPIを使うとサブフォルダも検索してくれますし、繰り返し使うことで列挙も可能です。 引数に"*.jpg"などのワイルドカードも使えますよ。(FindFirstFileEx()は属性で検索するためなので、FindFirstFile()でいいとおもいますが) 詳しくはMSDNヘルプを読んでみてください。
- DRAGON_TAIL
- ベストアンサー率48% (27/56)
.jpgを検索するなら *.jpgでOK
補足
説明不足ですみませんでした。 VBで、拡張子を指定して、ファイル検索をするプログラミングはどのようにするのでしょうか?