在java中逐字节比较两个文件

时间:2017-10-18 18:53:57

标签: java

我有两个大小相同的文件,md5代码也是一样的。文件很大。我对java中的文件操作不太熟悉。如何比较两个文件字节到字节?输入是两个文件路径并输出一个布尔值,表明它们是否相同。

2 个答案:

答案 0 :(得分:1)

您可能希望查看Apache Commons中的FileUtils类。他们有一个方法FileUtils.contentEquals似乎正在做你想要的。

尝试类似

的内容
Path firstFilePath = Paths.get("<Path-To-Your-First-File>");
Path secondFilePath = Paths.get("<Path-To-Your-Second-File>");

try {
    boolean isEqual = FileUtils.contentEquals(firstFilePath.toFile(), secondFilePath.toFile());
    if(isEqual) {
        //do business logic
    }
} catch (IOException e) {
    //handle exception
}

可以在此处找到指向apache文档的链接apache FileUtils docs

希望有所帮助。

答案 1 :(得分:0)

所以Apache commons IO有一个名为File file1 = new File("$Path1"); File file2 = new File("$Path2"); boolean equalFiles = FileUtils.contentEquals(file1, file2); 的方法。该API可用here。你可以做点什么

byte[] f1 = Files.readAllBytes(file1);
byte[] f2 = Files.readAllBytes(file2);
boolean equalFiles = Arrays.equals(file1, file2);

但是,如果你不想要任何外部的东西,你可以将文件读入字节数组并进行比较:

BufferedInputStream

由于您说文件很大,您应该使用CURLOPT_CUSTOMREQUEST => "GET"而不是数组并逐个读取文件。这个方法解释为here

Source.