星期日, 十一月 26, 2006

Java文件操作:判断两个路径是否指向同一个文件

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

没有评论: