[Tips][フォルダー操作] 指定したフォルダーのサブフォルダーを再帰的に取得する

DirectoryクラスのGetDirectoriesメソッドを使用すれば、任意のフォルダーの1階層下のサブフォルダーを取得することが出来ますが、それより深い階層にあるサブディレクトリーは取得することができません。

そこで、GetSubDirectoriesというメソッドを作成したので紹介します。

このメソッドは指定されたサブフォルダーを再帰的に取得します。

第1引数にはサブフォルダーを取得したいフォルダーのパスを、第2引数には結果を格納するList(Of String)型(C#はList<string>型)の変数を渡します。

VB版 GetSubDirectoriesメソッド

''' <summary>
''' 指定したフォルダーにあるサブフォルダを取得する
''' </summary>
''' <param name="DirPath">サブフォルダーを取得するフォルダーのパス</param>
''' <param name="Dirs">取得したサブフォルダー</param>
''' <remarks></remarks&gt>
Private Sub GetSubDirectories(ByVal DirPath As String, ByRef Dirs As List(Of String))
    For Each strDir As String In System.IO.Directory.GetDirectories(DirPath)
        'リストに追加
        Dirs.Add(strDir)
        '再帰でサブフォルダを取得する
        GetSubDirectories(strDir, Dirs)
    Next strDir
End Sub

C#版 GetSubDirectoriesメソッド

/// <summary>
/// 指定したフォルダーにあるサブフォルダを取得する
/// </summary>
/// <param name="targetDir"></param>
/// <param name="Dirs"></param>
private void GetSubDirectories(string targetDir,ref List<string> Dirs)
{
    foreach (string strDir in System.IO.Directory.GetDirectories(targetDir))
    {
        // リストに追加
        Dirs.Add(strDir);
        // 再帰でサブフォルダを取得する
        GetSubDirectories(strDir, ref Dirs);
    }
}

下記はGetSubDirectoriesメソッドの使用例です。

VBの例

Dim targetDir As String = "C:\Work"

Dim strDirs As New List(Of String)
'C:\Work以下のサブフォルダーをすべて取得する
GetSubDirectories(targetDir, strDirs)

C#の例

string targetDir = @"C:\Work";

List<string> strDirs = new List<string>();
// C:\Work以下のサブフォルダーをすべて取得する
GetSubDirectories(targetDir, ref strDirs);

“[Tips][フォルダー操作] 指定したフォルダーのサブフォルダーを再帰的に取得する” への2件の返信

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です