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

Path.GetFullPath(".")与Directory.GetCurrentDirectory()的区别是什么?

Path.GetFullPath(".") 与 Directory.GetCurrentDirectory() 的区别

你看到的调试结果一致只是场景巧合,这两个API并非只是使用偏好差异,核心区别如下:

  • 定位与语义不同

    • Directory.GetCurrentDirectory():专门用于获取进程的当前工作目录——这是操作系统为当前进程维护的一个全局目录属性,你可以通过Directory.SetCurrentDirectory()随时修改它,后续调用该方法会返回更新后的路径。
    • Path.GetFullPath("."):本质是相对路径解析操作,它把传入的相对路径(这里的.代表"当前目录")转换为绝对路径,解析时依赖的是进程当前工作目录,但它的能力不止于此——你可以传入任意相对路径(比如"../bin"),它都会解析出对应的绝对路径。
  • 功能范围不同

    • Directory.GetCurrentDirectory()只能返回当前工作目录的绝对路径,没有路径解析的额外能力。
    • Path.GetFullPath()支持解析更复杂的路径,比如包含环境变量的路径:
      // 会解析为用户目录的绝对路径
      var userPath = Path.GetFullPath("%USERPROFILE%");
      
      这种场景下Directory.GetCurrentDirectory()完全无法处理。
  • 特殊场景下的行为差异
    假设你在程序中修改了当前工作目录:

    // 修改当前工作目录到上级目录
    Directory.SetCurrentDirectory("..");
    Console.WriteLine(Directory.GetCurrentDirectory()); // 返回上级目录路径
    Console.WriteLine(Path.GetFullPath(".")); // 同样返回上级目录路径
    // 但Path.GetFullPath可以继续解析其他相对路径
    Console.WriteLine(Path.GetFullPath("bin/Debug")); // 返回上级目录下的bin/Debug绝对路径
    

    这里能看出,Path.GetFullPath是路径工具方法,而Directory.GetCurrentDirectory是进程目录状态的查询方法。

总结:如果只是想获取当前进程的工作目录,Directory.GetCurrentDirectory()语义更清晰;如果需要解析相对路径到绝对路径,Path.GetFullPath()是正确选择。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 09:55:10