C#如何提取文件夹路径指定上层部分并创建新目录
C# 路径提取与目录创建实现方案
实现逻辑
你可以通过拆分路径段、定位Radar目录位置的方式稳定获取上层路径,不受Radar后子目录层级影响,具体步骤如下:
- 校验输入的雷达路径非空
- 按系统目录分隔符拆分完整路径为独立目录段
- 定位
Radar目录在路径段中的索引位置 - 拼接索引之前的所有路径段得到目标上层路径
- 在上层路径下创建
Animated Gifs目录
完整代码
你可以直接将以下逻辑嵌入你原有代码中:
using System.IO; using System.Linq; // 原有逻辑保留,新增以下处理逻辑 string radarFullPath = textBoxRadarPath.Text.Trim(); if (!string.IsNullOrEmpty(radarFullPath)) { // 你原有创建雷达路径的逻辑 if (!Directory.Exists(radarFullPath)) { Directory.CreateDirectory(radarFullPath); btnStart.Enabled = true; } // 新增:创建Animated Gifs目录逻辑 string[] pathSegments = radarFullPath.Split(Path.DirectorySeparatorChar, StringSplitOptions.RemoveEmptyEntries); // 若需兼容目录名大小写差异,可替换为下一行注释代码 // int radarIndex = Array.FindIndex(pathSegments, s => s.Equals("Radar", StringComparison.OrdinalIgnoreCase)); int radarIndex = Array.IndexOf(pathSegments, "Radar"); if (radarIndex > 0) { string parentPath = Path.Combine(pathSegments.Take(radarIndex).ToArray()); // 兼容带盘符的Windows路径格式 if (parentPath.Length == 1 && char.IsLetter(parentPath[0])) { parentPath += Path.VolumeSeparatorChar + Path.DirectorySeparatorChar; } string animatedGifDir = Path.Combine(parentPath, "Animated Gifs"); if (!Directory.Exists(animatedGifDir)) { Directory.CreateDirectory(animatedGifDir); } } }
效果验证
- 输入路径为
D:\Downloaded Images\Radar时,提取到的上层路径为D:\Downloaded Images,最终创建D:\Downloaded Images\Animated Gifs - 输入路径为
D:\Downloaded Images\Radar\1\2\3\4\5时,提取到的上层路径和最终创建的目录和上述结果完全一致,满足多层子目录场景的需求
内容的提问来源于stack exchange,提问作者Daniel Lip
相关产品推荐
相关产品推荐

