我希望确保两个 java.io.File 不指向同一个文件,我尝试了各种方法,最终找到了一种方法,但我想确认是否没有漏洞。
这很重要,因为我正在尝试编写一个删除重复文件的程序,并且不想因为两个 java.io.File 指向同一个文件而误删唯一的文件。
File f1 = new File("file.txt");
File f2 = new File("./file.txt");
//these methods can't tell it's the same file
System.out.println(f1.compareTo(f2)); // 56 which mean not equal
System.out.println(f1.equals(f2)); // false
System.out.println(f1 == f2); // false
System.out.println(f1.getAbsolutePath().compareTo(f2.getAbsolutePath())); // 56
// this method can tell it's the same file... hopefully.
try{
System.out.println(f1.getCanonicalPath().compareTo(f2.getCanonicalPath())); // 0
}catch (Exception e){
e.printStackTrace();
}
顺便问一下,我的try-catch代码有问题吗?运行时会给我一个警告。