回答
如果在這兩個名稱使用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