Я не знаю о вас, ребята, но, по крайней мере, я ожидал, что f1 будет равен f2 в приведенном ниже коде, но, по-видимому, это не тот случай! Что вы думаете об этом? Кажется, я должен написать свой собственный метод equals, чтобы поддержать его, правильно?Java-файл равен
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));
}
}
То же самое происходит с классом пути Java 7. Но существуют такие методы, как Path.normalize() или Files.isSameFile() – Luciano
Вы можете безопасно просмотреть всех зрителей этого вопроса, показывая фактический вывод. Я ожидал, что 'equals' и' compareTo' противоречат результатам. Это не так, 'equals' возвращает false и' compareTo' возвращает -58, что означает лексикографически «меньше». @Luciano: Обратите внимание, что 'Files.isSameFile' в этом случае попытается открыть файлы, так как пути не равны и могут завершиться с' NoSuchFileException'. – bluenote10