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