如何以最小的努力(如果可能的话,使用一些现有的设施)将 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();
}
这应该可以处理一些场景,比如
uri 和其中潜在的转义字符,例如
file:///C:/Test%20Project.exe -> C:\TEST PROJECT.EXE
由点指定的路径段,表示当前目录或父目录
c:\aaa\bbb\..\ccc -> C:\AAA\CCC
波形符缩短(长)路径
C:\Progra~1\ -> C:\PROGRAM FILES
目录分隔符不一致
C:/Documents\abc.txt -> C:\DOCUMENTS\ABC.TXT
除此之外,它还可以忽略大小写、尾随 \
目录分隔符等。
关于.net - 如何在 .NET 中获取绝对或标准化文件路径?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1266674/