VB.NET
'''
<summary>
''' サブフォルダを全て検索する方法
''' (サブフォルダを再帰的に検索する)
'''
</summary>
'''
<param name="strRoot"></param>
'''
<param name="strExp"></param>
'''
<returns></returns>
Public Shared Function
SearchSubFolder(strRoot As String, strExp As String) As String()
' 初期化
Dim
scPath As System.Collections.Specialized.StringCollection = (New
System.Collections.Specialized.StringCollection())
' カレントディレクトリを検索
For Each
strFileName As String In System.IO.Directory.GetFiles(strRoot, strExp)
scPath.Add(strFileName)
Next
' サブディレクトリを再帰検索する方法
For Each
strDirPath As String In System.IO.Directory.GetDirectories(strRoot)
Dim
strFileLists As String() = SearchSubFolder(strDirPath, strExp)
' ワイルドカードに合致したファイルを取得
If
strFileLists IsNot Nothing Then
scPath.AddRange(strFileLists)
End If
Next
' 結果を配列に追加していく
Dim
strResults As String() = New String(scPath.Count - 1) {}
scPath.CopyTo(strResults, 0)
Return
strResults
End Function
C#
///
<summary>
/// サブフォルダを全て検索する方法
/// (サブフォルダを再帰的に検索する)
///
</summary>
///
<param name="strRoot"></param>
///
<param name="strExp"></param>
///
<returns></returns>
public static string[]
SearchSubFolder(string strRoot, string
strExp)
{
// 初期化
System.Collections.Specialized.StringCollection
scPath = (
new System.Collections.Specialized.StringCollection()
);
// カレントディレクトリを検索
foreach (string
strFileName in System.IO.Directory.GetFiles(strRoot, strExp))
{
scPath.Add(strFileName);
}
// サブディレクトリを再帰検索する方法
foreach (string
strDirPath in System.IO.Directory.GetDirectories(strRoot))
{
string[] strFileLists = SearchSubFolder(strDirPath, strExp);
// ワイルドカードに合致したファイルを取得
if (strFileLists != null)
{
scPath.AddRange(strFileLists);
}
}
// 結果を配列に追加していく
string[]
strResults = new string[scPath.Count];
scPath.CopyTo(strResults, 0);
return
strResults;
}