VB.NET, C#, PowerShellを使用しているエンジニアのためのサイト。
基本的な使用方法から開発で役立つ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); } }