C#多路径搜索目标文件夹并获取子目录的代码修复问题
代码修复方案
问题根因
原有代码固定将包含folder1的路径绑定到桌面检索,其余路径绑定到AppData检索,没有实现桌面检索失败后自动 fallback 到AppData检索的逻辑,同时硬绑定路径的规则不符合所有目标文件夹都优先检索桌面的需求。
修改点
- 删除按文件夹名称固定分配搜索路径的逻辑,所有待查找文件夹统一优先校验桌面路径
- 桌面路径不存在时,自动拼接AppData路径做二次校验
- 优化路径拼接逻辑,使用
Path.Combine避免斜杠不匹配问题 - 补全系统特殊路径的获取逻辑,修正原有代码的语法错误
修复后完整代码
using System; using System.IO; class Program { static void Main() { // 获取系统特殊路径 string Desktop = Environment.GetFolderPath(Environment.SpecialFolder.Desktop); string Appdata = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData); // 待查找文件夹数组,修正语法缺漏的分号 string[] directory = new string[] { @"folder1/", @"folder3/" }; foreach (string sPath in directory) { string sFullPath; // 优先校验桌面路径 sFullPath = Path.Combine(Desktop, sPath); if (!Directory.Exists(sFullPath)) { // 桌面不存在则跳转AppData检索 sFullPath = Path.Combine(Appdata, sPath); } // 路径存在时输出所有子目录 if (Directory.Exists(sFullPath)) { foreach (string folder in Directory.GetDirectories(sFullPath)) { Console.WriteLine(folder); } } } } }
验证效果
- 目标文件夹在桌面存在时,直接读取桌面目录下的子目录
- 桌面目标文件夹删除后,自动跳转至AppData目录查找对应文件夹
- 两个位置都不存在对应文件夹时,自动跳过无报错
内容的提问来源于stack exchange,提问作者николай
相关产品推荐
相关产品推荐

