Я хочу, чтобы два 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? это дает мне предупреждение, когда я бегу.
Какое предупреждение оно дает? –
Проблема в том, что catching 'Exception' является опасным и неясным другим проблемам – ControlAltDel
Проверьте это [ссылка] (http://stackoverflow.com/questions/8214576/java7-path-file-get-a-unique-id-like -an-инод-оф-а-файл). – MCHAppy