Java 如何在不考虑行顺序的情况下区分两个不同的文本文件?

Java 如何在不考虑行顺序的情况下区分两个不同的文本文件?,java,properties,diff,Java,Properties,Diff,我有两个包含信息的属性文件。我想把它们区分开来,看看它们是否相同。但是,在属性文件中,除非指定输出顺序,否则它们将以不同的顺序写入文件。我没有权限访问代码,只有这些文件。如何检查它们的内容是否相同 比如说, File1 File2 a e b c c a d d e b 如何检测这两个文件是否相同?a-e表示信息字符串 谢谢 对内容进行排序,然后逐行比较。读入内容,对其进行排序,然后并排浏览并比较。顺便说一句,排序可以

我有两个包含信息的属性文件。我想把它们区分开来,看看它们是否相同。但是,在属性文件中,除非指定输出顺序,否则它们将以不同的顺序写入文件。我没有权限访问代码,只有这些文件。如何检查它们的内容是否相同

比如说,

File1    File2
a        e
b        c
c        a
d        d
e        b
如何检测这两个文件是否相同?a-e表示信息字符串


谢谢

对内容进行排序,然后逐行比较。

读入内容,对其进行排序,然后并排浏览并比较。顺便说一句,排序可以通过将它们插入到已排序的数据结构中来完成。

您已经接受了答案,但我还是要补充一下,只是为了指出有一种更简单的方法(假设您谈论的是普通的Java属性文件)

实际上,您不必自己执行任何排序、逐行比较等操作,因为中的equals()已被巧妙地实现,并且实现了预期的功能。换句话说,正如约书亚·布洛赫所说的那样,“:-)

这里有一个例子。给定文件
p1.属性

a = 1
b = 2
p2.属性

b = 2
a = 1
…您可以将它们读入并与equals()进行比较:


您可以在命令行上执行此操作。您的两个文件是File1和File2

$sort File1>已排序的文件1

$sort File2>已排序的文件2

然后使用一个diff实用程序,比如meld(图形diff程序)


MELD SRIDTIDFIL1 FRIE1文件FRIE2

同样,该方法保证注释和空行被忽略,格式设置上的差异(x= AA与x=“AA”)。+ 1——这是比我的答案更好的答案(我从一般的观点出发,因为我现在是用C++编写而非java编写的)
Properties props1 = new Properties();
props1.load(new FileReader("p1.properties"));    
Properties props2 = new Properties();
props2.load(new FileReader("p2.properties"));

System.out.println(props1.equals(props2)); // true