• ベストアンサー

フォルダの中の特定のファイルを取得

(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種類の場合はできるのですが…。

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

  • ベストアンサー
  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.2

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)

回答No.3

*.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)
回答No.1

こんにちは >"*.html"のように1種類の場合はできるのですが…。 html,htmのみと言うのは、ヘルプ見ると むずかしそうですが。 逃げ道として、"*.htm?"が使えそうです。 これなら、html,htmとhtmから構成される 拡張子全部ヒットしますが。 ?は、一文字なので、 htma~htmzのような他になければ 代替が利くかもしれません。

関連するQ&A