C#取得指定路径下所有目录及文件名称(可递归)

来源:互联网 发布:安全优化版是什么意思 编辑:程序博客网 时间:2024/06/08 10:08

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
    {// 异常处理
    }

原创粉丝点击