怎么能以最小的代价(使用一些现有的设施,如果可能的话)转换像路径c:\aaa\bbb\..\ccc
到c:\aaa\ccc
?
Answer 1:
Path.GetFullPath
吧?
Answer 2:
我会写这样的:
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:\ Program Files文件
不一致的目录分隔符
C:/文档\的abc.txt - > C:\文件\的abc.txt
比其他,它也可以忽略的情况下,尾随\
目录分隔符等。
Answer 3:
规范化是的主要职责之一乌里在.NET类。
var path = @"c:\aaa\bbb\..\ccc";
var canonicalPath = new Uri(path).LocalPath; // c:\aaa\ccc
文章来源: How can one get an absolute or normalized file path in .NET?