.net - 如何在 .NET 中获取绝对或标准化文件路径?

标签 .net filepath

如何以最小的努力(如果可能的话,使用一些现有的设施)将 c:\aaa\bbb\..\ccc 等路径转换为 ​​c:\aaa\ccc

最佳答案

我会这样写:

public static string NormalizePath(string path)
{
    return Path.GetFullPath(new Uri(path).LocalPath)
               .TrimEnd(Path.DirectorySeparatorChar, Path.AltDirectorySeparatorChar)
               .ToUpperInvariant();
}

这应该可以处理一些场景,比如

  1. uri 和其中潜在的转义字符,例如

    file:///C:/Test%20Project.exe -> C:\TEST PROJECT.EXE

  2. 由点指定的路径段,表示当前目录或父目录

    c:\aaa\bbb\..\ccc -> C:\AAA\CCC

  3. 波形符缩短(长)路径

    C:\Progra~1\ -> C:\PROGRAM FILES

  4. 目录分隔符不一致

    C:/Documents\abc.txt -> C:\DOCUMENTS\ABC.TXT

除此之外,它还可以忽略大小写、尾随 \ 目录分隔符等。

关于.net - 如何在 .NET 中获取绝对或标准化文件路径?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1266674/

相关文章:

.net - UniCode 中是否有 MessageBox.Show() 等价物

如果路径以 "\"结尾,则 Powershell 命令修剪路径

java - 在哪里放置文件以从java中的包下的类读取?

android - IllegalArgumentException:无法在 FileProvider.getUriForFile 上找到包含 xxx 的配置根目录

android - 如何重命名从手机图库中检索到的图像并使用新名称保存

.net - 您创建 stub 的首选工具是什么?

.net - Web API Swagger 文档导出为 PDF

r - 如何从R中的basename结尾删除文件扩展名?

.net - 如何使用开放XML检索Excel的文化信息?

c# - 如何对数字字符串列表进行排序?最好使用 LINQ