1

.doc ファイルを含む複数のサブディレクトリを持つディレクトリがあります。例:

C:\Users\tmedina\Documents\testenviroment\Released\500\test0.doc
C:\Users\tmedina\Documents\testenviroment\Released\501\test1.doc
C:\Users\tmedina\Documents\testenviroment\Released\502\test2.doc
...
C:\Users\tmedina\Documents\testenviroment\Released\520\test20.doc

以下のコードでは、拡張子 '.doc' で終わるすべてのファイルをリスト ボックスに表示しようとしています。C:\Users\tmedina\Documents\testenviroment\Released

たとえば、私は

Dim root As String = "C:\Users\tmedina\Documents\testenviroment"

For Each fileFound As String In Directory.GetFiles(Path.Combine(root, "Released\*\*.doc"))
        ListBox1.Items.Add(fileFound)
    Next

しかし、それはエラーを出し続けIllegal characters in pathます。私が間違っていることについて何か提案はありますか?

4

2 に答える 2

2

ファイルシステムは Directory.GetFiles の double*を理解していreleased\*\*.doc
ません。引数を 1 つしかとらない GetFiles オーバーロードは、部分的なパス指定 (....*.doc) を好みません。

これで試してください

Dim root As String = "C:\Users\tmedina\Documents\testenviroment\released" 

For Each fileFound As String In Directory.GetFiles(root, "*.doc", SearchOption.AllDirectories)) 
    ListBox1.Items.Add(fileFound) 
Next 

\Visual Basic 言語では、文字をエスケープする必要はありません。
Directory.GetFiles には、ベース パス、ワイルドカード検索文字列、およびベース パスのすべてのサブフォルダーを検索するオプションを受け取るオーバーロードがあります。

于 2012-06-19T20:55:45.610 に答える
1

あなたの問題は、GetFilesメソッドを誤用していることです。"*.doc" などの検索文字列を渡したい場合は、次のように 2 番目の引数として渡す必要があります。

Directory.GetFiles(Path.Combine(root, "Released"), "*.doc")

また、「C:\Users\tmedina\Documents\testenviroment\Released*」などのワイルドカードを含むフォルダー パスを指定することはできません。すべてのサブフォルダーが必要な場合は、検索オプションの 3 番目のパラメーターを指定する必要があります。

Directory.GetFiles(Path.Combine(root, "Released"), "*.doc", SearchOption.AllDirectories)

何らかの理由で、すべての子孫ディレクトリを検索するのではなく、直接の子ディレクトリのみを検索する必要がある場合を除きます。その場合、Directory.GetDirectories直接のすべてのサブディレクトリのリストを取得するために を使用する必要があります。次に、それらをループしてGetFiles、それぞれを呼び出します。

于 2012-06-19T21:11:57.497 に答える