You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C#如何检测路径下的子文件夹并递归搜索指定后缀名的文件

实现方案

你要的递归遍历子目录功能不需要自己写递归逻辑,直接用.NET内置的API即可,Directory.GetFiles 方法提供了第三个参数用来指定搜索范围,传入SearchOption.AllDirectories就可以自动遍历所有子文件夹。

你现有代码还有两个小问题需要修正:

  • foreach循环里写死了搜索*.txt,没有用到用户输入的后缀
  • 没有做基础的输入校验和异常捕获,很容易因为输入错误或者权限问题直接崩溃

修正后的完整代码

using System;
using System.IO;

namespace FileSearchTool
{
    class Program
    {
        static void Main(string[] args)
        {
            // 获取并校验输入路径
            Console.WriteLine("请输入目标搜索路径:");
            string path = Console.ReadLine().Trim();
            if (!Directory.Exists(path))
            {
                Console.WriteLine("输入的路径不存在,请检查后重试。");
                return;
            }

            // 获取并处理后缀格式,兼容带点和不带点的输入
            Console.WriteLine("请输入要搜索的文件后缀:");
            string extension = Console.ReadLine().Trim();
            if (!extension.StartsWith("."))
            {
                extension = "." + extension;
            }

            try
            {
                // 第三个参数指定递归遍历所有子目录
                string[] matchedFiles = Directory.GetFiles(path, $"*{extension}", SearchOption.AllDirectories);

                if (matchedFiles.Length == 0)
                {
                    Console.WriteLine("未找到匹配后缀的文件。");
                    return;
                }

                Console.WriteLine($"共找到{matchedFiles.Length}个匹配文件:");
                foreach (string file in matchedFiles)
                {
                    // 如果需要输出完整路径,直接打印file变量即可
                    Console.WriteLine(Path.GetFileName(file));
                }
            }
            catch (UnauthorizedAccessException)
            {
                Console.WriteLine("部分子文件夹无访问权限,无法完成全部搜索。");
            }
            catch (Exception ex)
            {
                Console.WriteLine($"搜索出错:{ex.Message}");
            }
        }
    }
}

核心修改说明

  1. 递归遍历实现:Directory.GetFiles的第三个参数传入SearchOption.AllDirectories,框架会自动递归遍历所有子目录,不需要手动写递归逻辑
  2. 后缀兼容处理:自动给不带.的后缀补全前缀,用户输入txt或者.txt都能正常搜索
  3. 异常捕获:覆盖了路径不存在、无权限等常见异常,避免程序直接崩溃
  4. 修复了原代码foreach循环写死搜索*.txt的问题,直接使用查询到的匹配文件数组遍历即可

内容的提问来源于stack exchange,提问作者Techy Shadow

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 06:12:03