zukucode
主にWEB関連の情報を技術メモとして発信しています。

VB.NET フォルダ内にあるフォルダ一覧を取得する

フォルダ内にあるフォルダの一覧を取得するにはDirectory.GetDirectoriesを使用します。

例えば以下のフォルダ構成があるとします。

  • C:
    • work1
      • テキスト1.txt
      • subwork1
        • subsubwork1
        • subsubwork2
      • subwork2
      • subwork3
    • work2
      • テキスト3.txt

このとき、C:\work1フォルダ内にあるフォルダを全て取得したい場合は以下のようにします。

For Each path As String In Directory.GetDirectories("C:\work1", "*", SearchOption.TopDirectoryOnly)
    Console.WriteLine(path)
Next

'実行結果
'C:\work1\subwork1
'C:\work1\subwork2
'C:\work1\subwork3

Directory.GetDirectories

Directory.GetDirectories(検索するフォルダ, フィルタ, サブディレクトリを含めるかどうか)で指定します。

Directory.GetDirectoriesの名前空間はSystem.IOなので、コンパイルエラーになってしまう場合はvbファイルの先頭にImports System.IOを追加するか、Directory.GetDirectoriesの代わりにSystem.IO.Directory.GetDirectoriesとしてください。

ワイルドカードでフィルタ

第2引数で取得するフォルダをワイルドカード(*?)でフィルタすることができます。

*と指定すれば、任意の0文字以上が対象となるため、全てのファイルを取得します。

例えば、フォルダ名の最後が2で終わるフォルダのみ取得したい場合は以下のようにします。

For Each path As String In Directory.GetFiles("C:\work1", "*2", SearchOption.TopDirectoryOnly)
    Console.WriteLine(path)
Next

'実行結果
'C:\work1\subwork2

サブディレクトリの扱い

第3引数では、サブディレクトリを含めるかどうかを指定できます。

現在のディレクトリのみ取得する場合はTopDirectoryOnlyを指定し、サブディレクトリも含めて取得する場合はAllDirectoriesを指定します。

上記の例で、C:\work1の中にあるサブディレクトリ(subwork1)の中にあるフォルダも含めて取得したい場合は以下のようにします。

For Each filepath As String In Directory.GetFiles("C:\work1", "*", SearchOption.AllDirectories)
    Console.WriteLine(filepath)
Next

'実行結果
'C:\work1\subwork1
'C:\work1\subwork1\subsubwork1
'C:\work1\subwork1\subsubwork2
'C:\work1\subwork2
'C:\work1\subwork3

フォルダではなくファイルの一覧を取得する方法はVB.NET フォルダ内にあるファイルの一覧を取得するで紹介しています。


関連記事

  • VB.NET YYYYMMDD形式の文字列を日付型に型変換する

    VB.NETでYYYYMMDD形式の文字列を日付型に型変換する方法を紹介します。最初にYYYY/MM/DDのように、年月日の区切りに/を追加します。/区切りの文字列にするとCDateで日付型に型変換で...


  • VB.NET YYYYMMDD書式の文字列が日付かどうか判定する

    VB.NETで、YYYYMMDD書式の文字列が日付として妥当かどうかを判定します。以下のように、Date.TryParseExactを使用して、日付型の文字列に変換可能かどうかで判定しています。Dat...


  • VB.NET 文字列の全角と半角の変換を行う

    VB.NETで文字列を全角→半角や半角→全角に変換するにはStrConv関数を使用します。StrConvの第1引数に対象文字列を指定し、第2引数に変換方法を指定します。


  • VB.NET TypeOfで変数の型判定・比較を行う

    VB.NETで変数の型をチェックするにはTypeOfを使用します。TypeOf チェックしたい変数名 Is 判定したい型の形式で指定します。


  • VB.NET StringBuilderの末尾の1文字を削除する

    StringBuilderで末尾の1文字だけ削除したいときは以下のようにします。位置の指定について、1文字目は0から始まるため、文字列の長さ(Length)-1の位置が末尾の位置となります。末尾の位置...


  • VB.NET 指定した文字列を削除する

    VB.NETで指定した文字列を削除する方法を紹介します。Replace関数は指定した文字列を別の文字列に置換する関数です。置換する文字列に空文字を指定すれば、指定した文字列が削除される形になります。J...


  • VB.NET ダブルクォーテーションを文字列として扱う方法

    VB.NETで文字列を扱うときは以下のようにダブルクォーテーションで囲います。文字列の中にダブルクォーテーションを含めたい場合は少し工夫が必要です。以下のようにダブルクォーテーションを2つにすれば1つ...


  • VB.NET 文字列を数値に変換する方法

    VB.NETでString型の文字列を数値に変換する方法を紹介します。以下の例では、Integer型の数値に変換しています。文字列型の変数を数値型に変換する場合には以下に注意する必要があります。例えば...


  • VB.NET 文字列を連結する便利な方法まとめ

    VB.NETでは文字列の連結は文字列同士を&で結合できます。Visual Studio 2015からの新機能として文字列補間が可能になりました。以下のように、文字列の前に$をつけることにより、文字列の...


  • VB.NET 文字列をカナ、全角半角、大文字小文字などを区別せずに比較する方法

    VB.NETで文字列をひらがなカタカナ、全角半角、大文字小文字を区別せずに、前方一致や部分一致で検索する方法をまとめて紹介します。例えばあいうえおという文字列にうえという文字列が含まれているかどうか判...