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

调用DirectoryInfo.GetFiles时指定路径仍被自动拼接程序运行目录

根因

DirectoryInfo 不会自动解析Windows环境变量占位符,传入带%的路径字符串会被识别为相对路径,自动和程序当前工作目录拼接,最终形成无效路径抛出System.IO.DirectoryNotFoundException异常。

解决方案

方案1:先展开环境变量再传入

调用 Environment.ExpandEnvironmentVariables 方法先把占位符替换为实际路径:

// 先解析环境变量
string desktopPath = Environment.ExpandEnvironmentVariables(@"%homepath%\Desktop");
string[] fNames = new DirectoryInfo(desktopPath)
                     .GetFiles("*.bak")
                     .Select(x => x.Name)
                     .ToArray();

方案2(更推荐):直接调用系统API获取桌面路径

使用 Environment.GetFolderPath 配合系统已知文件夹枚举获取桌面路径,兼容用户自定义桌面位置、多语言系统等场景,稳定性更高:

// 直接获取系统注册的桌面物理路径
string desktopPath = Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory);
string[] fNames = new DirectoryInfo(desktopPath)
                     .GetFiles("*.bak")
                     .Select(x => x.Name)
                     .ToArray();

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 22:06:03