全ディレクトリを対象としたファイル検索をするには?

解決


Feim  2003-12-23 00:29:12  No: 81081

現在自作MDIブラウザを製作しているものです。
ある程度の機能の実装を終えて、今度はIEブックマークの
インポートを行い、それを自前のブックマークフォームにて
ツリー表示させようと考えているのですが、お気に入りフォルダ
にある全フォルダのファイル取得が出来なくて悩んでいます。

  最初はDIR関数を使って、検索が終了したパスをいちいち
配列に格納して、パスを辿っていくような方法で取得する方法
を試したのですが、範囲が広くなると必要とするバッファも
大きくなるので、現実的な方法ではないと感じました。

  その後FindFirstFileやsearchTreeForFile等も調べてみた
のですが、前者は特定フォルダしか検索しないし、後者は一つ
見つかれば終了してしまいます。以前VC++を使っていた時も
同じような悩みを抱えていました。宜しければ解決法等お教え
頂けると大変助かります。よろしくお願いします。


魔界の仮面弁士  2003-12-23 00:47:52  No: 81082

サブフォルダまで含めた列挙には、FileSystemObjectを使うと簡単かも。

Option Explicit

Private Sub Command1_Click()
    Dim strFolder As String

    strFolder = "C:\Program Files\Common Files\System\"
    
    List1.Clear
    EnumFiles CreateObject("Scripting.FileSystemObject").GetFolder(strFolder)
End Sub

Private Sub EnumFiles(ByVal ParentFolder As Object)
    Dim File As Object
    Dim Folder As Object

    For Each File In ParentFolder.Files
        List1.AddItem File.Path
    Next
    For Each Folder In ParentFolder.SubFolders
        EnumFiles Folder
    Next
End Sub


Feim  2003-12-23 00:56:10  No: 81083

早速のご返答有難う御座います!。

  それにしても・・・ガーン!、FSOで出来たんですか?。
ファイル処理にはFSOを使っていたので・・・灯台元暗しって
感じですw。今から早速調べてみます!。


Feim  2003-12-23 01:19:28  No: 81084

出来ました!(感涙。
魔界の仮面弁士(笑)さん、すばやいご返答を有難う
御座いました!。ためしにテストプログラムを動かして
結果を見たときには目から鱗でしたw。こんな簡単に
できたんですね(汗。


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

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






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