と同じですが、私は皆さんについては知りませんが、少なくとも以下のコードでは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クラスでも同じことが起こります。しかし、Path.normalize()やFiles.isSameFile()のようなメソッドがあります – Luciano
実際の出力を表示することで、この質問のすべてのビューアを安全にすることができます。私は 'equals'と' compareTo'が矛盾する結果を持っていることを期待していました。これはそうではなく、 'equals'はfalseを返し、' compareTo'は-58を返します。これは辞書編集的に "less than"を意味します。 @Luciano:パスが等しくなく、 'NoSuchFileException'で失敗する可能性があるので、' Files.isSameFile'はこの場合ファイルを開こうとします。 – bluenote10