【问题标题】:Why Path.Combine() disrespects ".." (up one folder level)?为什么 Path.Combine() 不尊重“..”(上一级文件夹)?
【发布时间】:2021-07-10 15:36:00
【问题描述】:

使用“..”跳转一级是文件系统导航最古老的功能 - 每个命令行实用程序都支持它! (是的,感谢 OS shell) 但是当你使用 Path.Combine() 时,它就像一个愚蠢的字符串连接器!示例:

Path.Combine(@"c:\abc\def", @"..\XYZ")

显然我们期望c:\abc\XYZ,而实际结果是c:\abc\def\..\XYZ。如果它对基本文件夹语法一无所知,那么将 Combine() 嵌入到 Path 类中的原因是什么?同样的方式它可以被编码为 String.Combine()。

是否有任何 .NET 解决方案可以正确处理路径连接?

【问题讨论】:

    标签: .net directory path


    【解决方案1】:

    幸运的是,有一个简单的解决方案——使用标准函数:

    Path.GetFullPath(Path.Combine(@"C:\dir1\dir2", "..\dir3\file.txt")) => C:\dir1\dir3\file.txt
    

    【讨论】:

      猜你喜欢
      • 2013-10-17
      • 2015-03-14
      • 2021-02-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-08-04
      • 2014-03-03
      • 1970-01-01
      相关资源
      最近更新 更多