我們知道在Windows操作系統下文件名是不區分大小寫;
另外在不同的操作系統下可以用 . 來表示當前目錄,或者直接只寫文件名也表示默認為當前目錄,
例如當前目錄是D:\work,那么文件D:\work\aaa.txt和.\Aaa.txt 實際上指的是磁盤上的同一個文件,
但是程序怎么來判斷這種情況呢?請看下面代碼
/** * 判斷兩個File對象是否指向同一個文件
* @throws IOException */
protected static void testCanonicalFile() throws IOException
{
File f1 = new File("D:\work\AAA.txt");
File f2 = new File("./aaa.txt");
boolean sameFile = f1.getCanonicalFile(). equals(f2.getCanonicalFile());
System.out.println(sameFile);
}
通過getCanonicalFile方法來獲取某個文件在當前操作系統下對應的目標文件,
只要兩個路徑指向同一個文件,
則兩個文件對象的getCanonicalFile返回的對象一定相等,
因此上面的例子打印的值是 true.