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