Nie wiem jak wy, ale przynajmniej spodziewałem się, że f1 będzie równe f2 w poniższym kodzie, ale najwyraźniej tak nie jest! Jakie są twoje myśli na ten temat? Wygląda na to, że muszę napisać własną metodę równości, żeby ją wspierać, prawda?Plik Java jest równy
import java.io.*;
public class FileEquals
{
public static void main(String[] args)
{
File f1 = new File("./hello.txt");
File f2 = new File("hello.txt");
System.out.println("f1: " + f1.getName());
System.out.println("f2: " + f2.getName());
System.out.println("f1.equals(f2) returns " + f1.equals(f2));
System.out.println("f1.compareTo(f2) returns " + f1.compareTo(f2));
}
}
To samo dzieje się z klasą ścieżki Java 7. Istnieją jednak metody takie jak Path.normalize() lub Files.isSameFile() – Luciano
Możesz bezpiecznie zabezpieczyć wszystkich użytkowników tego pytania w pewnym momencie, pokazując rzeczywiste wyniki. Spodziewałem się, że 'equals' i' compareTo' mają sprzeczne wyniki. Tak nie jest, "equals" zwraca false, a 'compareTo' zwraca -58, co oznacza leksykograficznie" mniej niż ". @Luciano: Zauważ, że 'Files.isSameFile' w tym przypadku spróbuje otworzyć pliki, ponieważ ścieżki nie są równe i mogą zawieść z' NoSuchFileException'. – bluenote10