c#遍历文件夹和文件

1、获取指定文件夹的全路径

适用于不知道文件夹的准确名称,使用关键词获取文件夹的全称,并返回全路径

private string GetFolderName(string path,string key)
        {
            DirectoryInfo theFolder = new DirectoryInfo(path);
            //遍历文件夹
            foreach (DirectoryInfo NextFolder in theFolder.GetDirectories())
            {
                if (NextFolder.Name.ToUpper().IndexOf(key.ToUpper()) >= 0)
                {
                    return NextFolder.Name;
                }
            }
            return " ";
        }



2、获取指定文件夹下所有的pdf文件全路径

private List<string> GetAllPDFFiles()
        {
            List<string> fileNames = new List<string>();
            string mainPath = @"Y:\Tech-center\test\"
### C# 使用 `Directory.GetFiles` 方法遍历文件夹中的文件C# 中,可以使用 `System.IO.Directory` 类的静态方法来实现对指定路径下的文件进行检索。以下是关于如何通过 `Directory.GetFiles` 方法获取文件夹内部文件的具体说明。 #### 1. 基本用法 `Directory.GetFiles` 是一种简单的方式用于返回指定目录中所有匹配条件的文件名数组。它支持两种重载形式:仅传入路径参数或者同时传递路径搜索模式参数[^2]。 ```csharp using System; using System.IO; class Program { static void Main() { string path = @"C:\Your\Path"; // 替换为实际目标文件夹路径 try { foreach (string file in Directory.GetFiles(path)) { Console.WriteLine(file); } } catch (Exception ex) { Console.WriteLine($"Error: {ex.Message}"); } } } ``` 此代码片段展示了最基础的应用场景——打印出给定路径下所有的文件名称列表[^2]。 #### 2. 利用通配符筛选特定类型的文件 如果只需要找到某些扩展名为 `.txt` 的文档,则可以在调用时加入第二个参数作为过滤器: ```csharp foreach (string txtFile in Directory.GetFiles(path, "*.txt")) { Console.WriteLine(txtFile); } ``` 这段程序只会显示那些以“.txt”结尾的文本文件。 #### 3. 结合递归来深入子目录 虽然 `GetFiles` 可以单独作用于单层结构之上,但如果希望连同其下属各级别的内容也一并处理的话,就需要借助额外逻辑完成这一任务。下面给出了一种基于栈数据结构的手动实现方式来进行深度优先搜索: ```csharp void TraverseDirectory(string rootDir) { Stack<string> dirs = new Stack<string>(); if (!Directory.Exists(rootDir)) return ; dirs.Push(rootDir); while(dirs.Count >0 ) { var currentDir=dirs.Pop(); try { foreach(var subDir In Directory.GetDirectories(currentDir)){ dirs.Push(subDir); } foreach(var fileName In Directory.GetFiles(currentDir)){ ProcessFile(fileName); } } catch(Exception e){ Console.Error.WriteLine(e.Message); } } } // 定义自己的业务逻辑函数 processfile 来决定怎样对待每一个发现出来的档案. private void ProcessFile(String filePath){...} ``` 以上例子演示了一个完整的解决方案,其中包含了异常捕获机制以及针对每个遇到的项目执行自定义动作的能力[^2]。 #### 注意事项 当尝试访问受保护区域内的资源时可能会抛出 UnauthorizedAccessException 异常;另外,在不存在所提供的地址的情况下也会引发 ArgumentException 或者 DirectoryNotFoundException 。因此建议总是把可能发生的错误考虑进去,并采取适当措施加以防范[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值