比较两个文件名以查看它们是否是同一个文件的正确方法是什么?

csh*_*net 6 .net c# comparison filenames

可能重复:
确定两个路径引用C#中同一文件的最佳方法

所以我需要比较两个Windows文件名,以确定它们是否相同.一个用户给了我,一个给了我另一个程序.那么你应该如何比较:

C:\Program Files\Application1\APP.EXE
C:\Progra~1\Applic~1\APP.EXE
C:\program files\applic~1\app.exe

我似乎无法找到一种方法来始终"规范化"路径,我尝试使用Path.GetFullPath(路径)和新的FileInfo(路径).FullName,似乎都没有解决这个问题.

更新:

Path.GetFullPath(path)将更正短到长名称转换但不会规范化大小写.因此需要StringComparer.OrdinalIgnoreCase.Equals(path1,path2).

Gon*_*alo 4

您将需要Path.GetFullPath()+ 不区分大小写的字符串比较。

运行以下代码:

using System;
using System.IO;

class Test {
 static void Main ()
 {
  //string [] str = new string[] {@"c:\program files\vim\vim72", @"c:\progra~1\vim\vim72"};
  string [] str = new string[] {@"c:\program files\Refere~1\microsoft", @"c:\progra~1\Refere~1\microsoft"};
  foreach (string s in str) {
   // Call s = Environment.ExpandEnvironmentVariables (s) if needed.
   Console.WriteLine (Path.GetFullPath (s));
  }
 }
}
Run Code Online (Sandbox Code Playgroud)

给出:

c:\program files\Reference Assemblies\microsoft
c:\Program Files\Reference Assemblies\microsoft
Run Code Online (Sandbox Code Playgroud)