C#调用File.AppendAllText时传入路径被拼接运行目录报错如何解决
问题原因
你遇到的路径被自动拼接的核心原因是路径字符串开头携带了不可见的Unicode控制字符U+202A(左到右嵌入符):
- 这个字符通常是从Windows文件属性、资源管理器地址栏复制路径时自动附带的,在代码编辑器中完全不可见
- .NET的路径解析逻辑无法识别带隐形字符的
C:为绝对路径开头,会默认将其判定为相对路径,自动拼接程序当前工作目录,最终形成你报错中显示的拼接后非法路径
修复方案
你可以任选以下一种方案解决问题:
- 手动重写路径:将现有路径字符串整行删除,不要使用复制粘贴,手动逐字敲入完整绝对路径即可
- 排查清理隐形字符:将光标移动到代码中路径字符串的
C:左侧,多次按退格删除看不见的控制字符,直到光标直接贴在C的左侧即可 - 更鲁棒的路径写法(推荐):不硬编码完整绝对路径,通过系统API获取桌面路径后拼接目标文件名,避免复制带来的隐形字符问题,同时兼容不同用户的系统路径配置,示例代码如下:
static void Main(string[] args) { // 获取当前用户桌面路径 string desktopPath = Environment.GetFolderPath(Environment.SpecialFolder.Desktop); // 拼接得到目标文件完整路径 string path = Path.Combine(desktopPath, "MyFile.txt"); string message = "Hello World !"; File.AppendAllText(path, message); }
内容的提问来源于stack exchange,提问作者Joe
相关产品推荐
相关产品推荐

