using System.IO;
/// <summary>
/// 取得指定路径下所有目录及文件名称(可递归)
/// </summary>
/// <param name="strDir">指定路径</param>
/// <param name="strFilePattern">要与 strDir 中的文件名匹配的搜索字符串
/// 例:
/// “*.abc*”返回扩展名为 .abc、.abcd、.abcde、.abcdef 等的文件。
/// “*.abcd”只返回扩展名为 .abcd 的文件。
/// “*.abcde”只返回扩展名为 .abcde 的文件。
/// “*.abcdef”只返回扩展名为 .abcdef 的文件。
/// </param>
/// <param name="arrDirs">查询得到的所有目录ArrayList</param>
/// <param name="arrFiles">查询得到的所有文件名称ArrayList</param>
/// <param name="bIsRecursive">是否递归查询</param>
private void GetFileList(string strDir, string strFilePattern, ArrayList arrDirs,
ArrayList arrFiles, bool bIsRecursive)
{
if (string.IsNullOrEmpty(strDir))
{ // 参数正确性检查
return;
}
try
{
// 取得指定路径下所有符合条件的文件
string[] strFiles = Directory.GetFiles(strDir, strFilePattern);
// 取得指定路径下所有目录
string[] strDirs = Directory.GetDirectories(strDir);
foreach (string name in strFiles)
{ // 将所有文件名称加入结果ArrayList中
arrFiles.Add(name);
}
foreach (string name in strDirs)
{ // 将所有目录加入结果ArrayList中
arrDirs.Add(name);
}
if (bIsRecursive)
{ // 递归
if (strDirs.Length > 0)
{
foreach (string dir in strDirs)
{ // 递归遍历所有文件夹
GetFileList(dir, strFilePattern, arrDirs, arrFiles, bIsRecursive);
}
}
}
}
catch
{// 异常处理
}
}