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で紹介します。 […]
[…] 指定したフォルダーのサブフォルダーを再帰的に取得する […]