2012-05-25 56 views
2

我想用char by char比较来断言文件。 要做到这一点的最佳方法是什么?没有第三部分库。哪个文件阅读器最适合这个性能?Java,断言文件等于

+1

有多大的文件?如果它们足够小,那么只需将它们加载到内存中,并将'byte []'与适当的断言工具进行比较可能是最简单的方法。如果它们可以更大,那当然是行不通的。 –

+0

从0到10000字节 – Ilya

+2

这应该很容易适应内存。注意:两个文件可以有不同的字节,但具有完全相同的字符。 ;) –

回答

12

不知道对第三方库有什么异议......不需要重新发明轮子。

我发现了开源和广泛使用apache.commons.io方法FileUtils.contentEquals(file1, file2)是相当不错的 - 这里是javadoc

+0

有没有这个函数的java 7实现? – Thomas

+0

@Thomas - no。当问这个问题时,Java 7已经出现了将近一年了,正如答案所示,这需要第三方库。 – amaidment

2

如果你碰巧使用谷歌番石榴库,然后你可以使用:

Files.equal(file1, file2); 

docs

Returns true if the files contains the same bytes. 
+0

没有[equals](http://docs.guava-libraries.googlecode.com/git/javadoc/com/google/common/io/Files.html)。 – wener

+0

@ wener固定,它是'平等' – Andrejs

1

对于小文件(高达数MB),流式I/O会产生很少的好处,所以你可以保持简单:

Arrays.equals(Files.readAllBytes(firstFile), Files.readAllBytes(secondFile)); 

如果你想使用不同的编码S,你也可以将字节解码成字符:

boolean equal = new String(Files.readAllBytes(firstFile), firstEncoding).equals(
       new String(Files.readAllBytes(secondFile), secondEncoding)); 

这只需要Java 7