如何在 C#/.NET 中找到文件的真实区分大小写名称?

问题描述

我正在使用 C# 处理大小写不敏感 (Mac/Windows) 文件系统上的文件。但我想找出存储在磁盘上的该文件的真实(区分大小写)名称

我尝试创建一个 new FileInfo(filePath) 并检查 FullName,但这只会让我返回给它的路径。而 Name 属性只是剥离了目录,在我传入时再次给出了名称,而不是实际存储在磁盘上的文件名称

我想我可以遍历父目录中的所有文件,并寻找与感兴趣的文件最匹配的文件,但这会降低性能。肯定有一个 API 可以有效地做到这一点吗?

解决方法

在我的测试中,这给出了写在磁盘上的名称

var x = Directory.GetFiles(@"E:\temp","TEST.EXE");
Console.WriteLine(x); // => outputs: E:\temp\test.exe