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