- ベストアンサー
フォルダの中の特定のファイルを取得
(VB.NET) Dim files As String() = System.IO.Directory.GetFiles("C:\aaa", "*", System.IO.SearchOption.AllDirectories) ListBox1.Items.AddRange(files) 上記のコードでは"C:\aaa"以下のすべてのファイルを取得しますが、 例えばGetFilesメソッドの2番目のパラメータに "*.(html|htm)"などと指定して(この場合は無理でしたが)"C:\aaa"以下の拡張子が「html」または「htm」のファイルを取得するにはどうすればよいでしょうか。 "*.html"のように1種類の場合はできるのですが…。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
GetFilesで取得した配列を独自に処理してやればいいのでは for each ss as string in files dim fi as new IO.FileInfo(ss) dim ext as String = fi.Extention.ToLower ' このextとの比較を工夫すれば別の種類のファイルでも対処可能 if ext = ".html" or ext = ".htm" then ListBox1.Items.add( ss ) end if next といった具合で ...
その他の回答 (2)
- Yune-Kichi
- ベストアンサー率74% (465/626)
*.htm*でよければ,*.htmを探せば引っかかってきます。 これは,*.htmlの短いファイル名の拡張子が.htmだからです (短いファイル名の生成を抑制している場合を除く)。 まじめにやるなら,フィルタリングすることになります。 VB 2008 + .NET Framework 3.5前提のコードですが, Dim files = _ From file In Directory.GetFiles("C:\aaa", "*", SearchOption.AllDirectories) _ From extension In New String() { ".htm", ".html" } _ Where String.Compare(Path.GetExtension(file), extension, CultureInfo.InvariantCulture, CompareOptions.IgnoreCase) = 0 _ Select file で*.htmと*.htmlの含まれたIEnumerable(Of String)が得られます。 配列が必要ならばToArray拡張メソッドを使ってください。
- tom11
- ベストアンサー率53% (134/251)
こんにちは >"*.html"のように1種類の場合はできるのですが…。 html,htmのみと言うのは、ヘルプ見ると むずかしそうですが。 逃げ道として、"*.htm?"が使えそうです。 これなら、html,htmとhtmから構成される 拡張子全部ヒットしますが。 ?は、一文字なので、 htma~htmzのような他になければ 代替が利くかもしれません。