3

我想使用 char by char 比较断言文件。最好的方法是什么?没有第 3 部分库。哪个文件阅读器最适合这个?

4

3 回答 3

14

不确定对第 3 方库的反对意见是什么……无需重新发明轮子。

我发现开源和广泛使用的apache.commons.io方法FileUtils.contentEquals(file1, file2)非常好 - 这是javadoc

于 2012-05-25T08:32:27.447 回答
2

如果您碰巧正在使用 Google Guava 库,那么您可以使用:

Files.equal(file1, file2);

文档

Returns true if the files contains the same bytes.
于 2014-03-09T20:27:48.723 回答
1

对于小文件(最多几 MB),流式 I/O 几乎没有什么好处,所以你可以保持简单:

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

如果要使用不同的编码,还可以将字节解码为字符:

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

这只需要 Java 7。

于 2015-12-21T16:40:03.723 回答