我不了解你们,但是至少我期望在下面的代码中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));
    }
}

最佳答案

不,不是这样。因为equals在比较绝对路径的相等性(在您的情况下,它类似于:

some-project\.\hello.txt
some-project\hello.txt

因此,它们自然是不同的。



可能是。但是首先,您必须知道要比较什么?仅路径名?如果是,请按照以下方式比较其规范路径:
f1.getCanonicalPath().equals(f2.getCanonicalPath())

但是,如果要比较两个不同文件的内容,则,您应该编写自己的方法-或只是从Internet上的某个地方复制即可。

关于java - Java文件等于,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8930859/

10-12 21:41