如何以最小的努力(如果可能的话,使用一些现有的设施)转换路径,例如c:\aaa\bbb\..\ccc
to c:\aaa\ccc
?
我会这样写:
public static string NormalizePath(string path)
{
return Path.GetFullPath(new Uri(path).LocalPath)
.TrimEnd(Path.DirectorySeparatorChar, Path.AltDirectorySeparatorChar)
.ToUpperInvariant();
}
这应该可以处理一些场景,例如
-
uri 和其中潜在的转义字符,例如
文件:///C:/Test%20Project.exe -> C:\TEST PROJECT.EXE
-
由点指定的路径段,表示当前目录或父目录
c:\aaa\bbb\..\ccc -> C:\AAA\CCC
-
波形符缩短(长)路径
C:\Progra~1\ -> C:\程序文件
-
目录分隔符不一致
C:/Documents\abc.txt -> C:\DOCUMENTS\ABC.TXT
除此之外,它可以忽略大小写、尾随\
目录分隔符等
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)