HIRO's.NET

VB.NET, C#, PowerShell Tipsサイト

 VB.NET, C#, PowerShellを使用しているエンジニアのためのサイト。

 基本的な使用方法から開発で役立つTipsまで幅広く取り扱っています。

HIRO's.NET RSSHIRO's.NET RSS


C# 2003の開発でお困りのことはありませんか?
そんな悩みは当サイトで解決!!

HOME > C# 2003 Tips > フォルダ操作 Tips メニュー

02.指定フォルダ内のすべてのサブフォルダを取得する

UPDATE:2004/05/24 

<< 前のTips  次のTips >>

 


 残念ながら指定フォルダ内のすべてのサブフォルダを取得するメソッドは.NETでは提供されていません。そこで、System.IO名前空間のDirectoryクラスのGetDirectoriesメソッドを再起的に使用して実現しようと思います。

書式:
private void GetSubDirs(
string SearchDir,
ArrayList FindDirs
)

引数:
SearchDir : 検索するフォルダパス文字列
FindDirs : 見つかったサブフォルダ一覧

戻り値:
なし

最初は第2引数はstring型を使用しようかな、と思ったんですが再起的に検索してフォルダの一覧を追加していく必要があるために、ArrayList 型を使用することとしました。ArraListはAddメソッドを持っており、取得したフォルダ名を追加していけるからです。

 
サンプル
using System.IO;
:
:省略
:
private void button1_Click(object sender, System.EventArgs e)
{

    // 変数の宣言
    ArrayList strSubDirs = new ArrayList();

    // [C:\Work]のサブフォルダすべてを取得する
    GetSubDirectories(@"C:\Work", ref strSubDirs);

    // 取得したサブフォルダ名を表示する
    foreach ( string strDir in strSubDirs )
    {
        Console.WriteLine(strDir);
    }

}

/// <summary>
/// 指定フォルダ以下のサブフォルダを取得する
/// </summary>
/// <param name="SearchDir">検索するフォルダ名</param>
/// <param name="FindDirs">見つかったサブフォルダ名</param>
private void GetSubDirectories(
string SearchDir, ref ArrayList FindDirs )
{

    foreach ( string strDir in Directory.GetDirectories(SearchDir) )
    {
        // ArrayListに取得したフォルダを追加
        FindDirs.Add(strDir);

        // 再帰呼び出しでサブフォルダを取得する
        GetSubDirectories(strDir, ref FindDirs);
    } 

}