【发布时间】:2023-04-03 15:05:01
【问题描述】:
我不了解你们,但至少我预计 f1 将等于 f2 在下面的代码中,但显然情况并非如此!您对此有何看法?看来我得自己写个equals方法来支持了,对吧?
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 类也是如此。但是存在 Path.normalize() 或 Files.isSameFile() 等方法
-
您可以通过显示实际输出来保护这个问题的所有查看者一段时间。我期待
equals和compareTo的结果相互矛盾。情况并非如此,equals返回 false,compareTo返回 -58,在字典上表示“小于”。 @Luciano:请注意,Files.isSameFile在这种情况下会尝试打开文件,因为路径不相等并且可能会因NoSuchFileException而失败。