比较.Net中的两个路径以确定它们是否指向同一文件或目录的最佳方法是什么?
如何验证这些是否相同:
c:\Some Dir\SOME FILE.XXX
C:\\\SOME DIR\some file.xxx
Run Code Online (Sandbox Code Playgroud)更好的是:有没有办法验证这些路径指向某个网络驱动器上的同一文件:
h:\Some File.xxx
\\Some Host\Some Share\Some File.xxx
Run Code Online (Sandbox Code Playgroud)更新:
Kent Boogaart正确回答了我的第一个问题; 但我仍然很想知道我的第二个问题是否有关于比较网络驱动器上的文件和目录路径的解决方案.
更新2(我的两个问题的综合答案):
问题1:本地和/或网络文件和目录
c:\Some Dir\SOME FILE.XXX
C:\\\SOME DIR\some file.xxx
Run Code Online (Sandbox Code Playgroud)
答案:用System.IO.Path.GetFullPath
例如:
var path1 = Path.GetFullPath(@"c:\Some Dir\SOME FILE.XXX");
var path2 = Path.GetFullPath(@"C:\\\SOME DIR\subdir\..\some file.xxx");
// outputs true
Console.WriteLine("{0} == {1} ? {2}", path1, path2, string.Equals(path1, path2, StringComparison.OrdinalIgnoreCase));
Run Code Online (Sandbox Code Playgroud)
问题2:本地和/或网络文件和目录
答案:使用http://briancaos.wordpress.com/2009/03/05/get-local-path-from-unc-path/上发布的GetPath方法
Ken*_*art 41
var path1 = Path.GetFullPath(@"c:\Some Dir\SOME FILE.XXX");
var path2 = Path.GetFullPath(@"C:\\\SOME DIR\subdir\..\some file.xxx");
// outputs true
Console.WriteLine("{0} == {1} ? {2}", path1, path2, string.Equals(path1, path2, StringComparison.OrdinalIgnoreCase));
Run Code Online (Sandbox Code Playgroud)
忽略大小写只是Windows上的一个好主意.您可以FileInfo.FullName
以类似的方式使用,但可以使用Path
文件和目录.
不确定你的第二个例子.
虽然这是一个旧帖子,因为我发现了一个.
使用Path.GetFullpath我可以解决我的问题,例如.
Path.GetFullPath(path1).Equals(Path.GetFullPath(path2))
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
17724 次 |
最近记录: |