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>>
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);
Please follow and like us:

コメント
[…] このメソッドは指定したフォルダーの第1階層下のフォルダーをすべて返します。さらに下の階層にあるフォルダーまで取得する方法については次の「指定したフォルダーのサブフォルダーを再帰的に取得する」Tipsで紹介します。 […]
[…] 指定したフォルダーのサブフォルダーを再帰的に取得する […]