回答
如果在这两个名称使用Path.GetFullPath
他们应该解决相同的字符串:
string fullPath1 = Path.GetFullPath(absolutePath);
string fullPath2 = Path.GetFullPath(relativePath);
然后fullPath1
应该等于fullPath2
如果它们引用同一个文件。确保你做一个不区分大小写的比较,因为Windows文件名不区分大小写。
这不处理Windows中文件名不区分大小写的情况。在当前的.NET Framework实现中,即使Path.GetFullPath(@“c:\ a.txt”)不是Path.GetFullPath(@“C:\ A.TXT”), )相同的文件。 – 2017-10-16 04:32:37
@Carl等于测试应该使用正确的比较选项当然。 – ChrisF 2017-10-16 06:35:59
也许这对你有用?
FileInfo file1 = new FileInfo(@"D:\x.txt");
FileInfo file2 = new FileInfo(@"..\x.txt");
if (file1.FullName == file2.FullName) {
// yes, they match..
我认为它可行,但我不知道文件访问是否涉及这里,所以我宁愿去GetFullPath解决方案。然而,对于一个工作解决方案来说+1 – 2012-08-05 12:28:57
文件访问被推迟到您尝试访问需要它的属性。 – 2012-08-05 13:09:12
是,使用Path.GetFullPath
然后不区分大小写的比较:
var file1 = Path.GetFullPath(@"C:\TEMP\A.TXT");
var file2 = Path.GetFullPath(@"a.txt"); // Assuming current directory is C:\TEMP
// Test 1 (good)
if (file1.Equals(file2, StringComparison.OrdinalIgnoreCase))
{
Console.WriteLine("Test 1: they match");
}
// Test 2 (fails when file paths differ by case)
if (file1 == file2)
{
Console.WriteLine("Test 2: they match");
}
大多数人不区分大小写的文件系统上运行.NET,所以通过使用==
接线员会将情况相比较,只有不同的路径不会产生所需的结果。
- 1. Python:检查“两个”.doc文件是否是相同的文件?
- 2. 检查两个文件是否在bash中的同一卷上
- 3. 检查两个文件路径解析为同一个文件
- 4. 检查一个文件是否包含另一个文件
- 5. 检查Applescript中是否有两个文件是相同的
- 6. 两个文件是否指向同一个文件?
- 7. 检查一个文件的链接是否是一个文本
- 8. 检查两个文件是否有相同的内容
- 9. 检查Cocoa中的两个文件是否相同
- 10. 如何检查一个文件是否是一个带有PHP的bash文件?
- 11. PHP - 检查一个文件夹中是否存在文件
- 12. 写一个文件,并检查文件是否存在
- 13. VB检查一个文件夹里面是否有文件
- 14. 检查文件是否属于一个文件夹
- 15. 检查文件是否是别名Swift
- 16. PHP检查文件是否在同一时间对多个文件夹存在
- 17. 是否有可能有两个.html文件,使一个文件
- 18. 如何检查一个文件是否存在从一个url
- 19. 如何检查一个文件是否在一个目录
- 20. 检查一个文件中是否存在一个值
- 21. 检查一个文件是否从另一个进程打开
- 22. 检查一个CSS是否加载一个外部文件
- 23. 检查一个文件是否存在于一个linux脚本
- 24. 如何检查一个txt文件是否包含一个词
- 25. 检查两个不同目录中的文件名(Unix)
- 26. 什么是正确的方式来比较两个文件名,看看他们是否是同一个文件?
- 27. 检查文件名是否有效
- 28. 检查文件是否已签名
- 29. 检查文件名是否存在
- 30. 检查文件是否更改名称
符号链接怎么样?结? – 2012-08-05 12:10:18
检查它们的大小或日期(如创建,修改)。如果全部平等,这是相同的文件。 – 2012-08-05 12:11:39
符号链接和连接点我认为我不会遇到。 – 2012-08-05 12:27:28