我們知道在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.