Java 比较两个相同的PDF时,Apache FileUtils始终返回false
我使用FileUtils来比较两个相同的PDF。代码如下:Java 比较两个相同的PDF时,Apache FileUtils始终返回false,java,pdf,fileutils,Java,Pdf,Fileutils,我使用FileUtils来比较两个相同的PDF。代码如下: boolean comparison = FileUtils.contentEquals(pdfFile1, pdfFile2); 尽管两个pdf文件都是相同的,我还是不断得到false。我还注意到,当我执行时: byte[] byteArray = FileUtils.readFileToByteArray(pdfFile1); byte[] byteArrayTwo = FileUtils.readFileToByteArray(
boolean comparison = FileUtils.contentEquals(pdfFile1, pdfFile2);
尽管两个pdf文件都是相同的,我还是不断得到false
。我还注意到,当我执行时:
byte[] byteArray = FileUtils.readFileToByteArray(pdfFile1);
byte[] byteArrayTwo = FileUtils.readFileToByteArray(pdfFile2);
System.out.println(byteArray);
System.out.println(byteArrayTwo);
我得到两个pdf文件的以下字节码:
[B@3a56f631
[B@233d28e3
因此,尽管两个pdf文件在视觉上完全相同,但它们的字节码不同,因此无法通过布尔测试。有没有办法测试相同的pdf文件是否相同?是的,从两个文件生成md5总和 看看这些总数是否相同 如果是,则您的文件是相同的
这也是肯定的,几乎是100% 如果总和不相同,则
你的文件肯定不同 要生成md5总和,Linux上有一个
md5sum
命令,对于Windows,有一个名为
fciv
的小工具
是,从两个文件生成md5总和 看看这些总数是否相同 如果是,则您的文件是相同的
这也是肯定的,几乎是100% 如果总和不相同,则
你的文件肯定不同 要生成md5总和,Linux上有一个
md5sum
命令,对于Windows,有一个名为
fciv
的小工具
是,从两个文件生成md5总和 看看这些总数是否相同 如果是,则您的文件是相同的
这也是肯定的,几乎是100% 如果总和不相同,则
你的文件肯定不同 要生成md5总和,Linux上有一个
md5sum
命令,对于Windows,有一个名为
fciv
的小工具
是,从两个文件生成md5总和 看看这些总数是否相同 如果是,则您的文件是相同的
这也是肯定的,几乎是100% 如果总和不相同,则
你的文件肯定不同 要生成md5总和,Linux上有一个
md5sum
命令,对于Windows,有一个名为
fciv
的小工具
请注意,您编写的两个标识符
[B@3a56f631
[B@233d28e3
它们是不同的,因为它们属于两个不同的对象。这些是对象标识符,而不是字节码。两个对象在逻辑上可以相等,即使它们不是完全相同的对象(例如,它们具有不同的objectid)
否则,按照peter.petrov编写的那样计算MD5校验和是一个好主意。请注意,您编写的两个标识符
[B@3a56f631
[B@233d28e3
它们是不同的,因为它们属于两个不同的对象。这些是对象标识符,而不是字节码。两个对象在逻辑上可以相等,即使它们不是完全相同的对象(例如,它们具有不同的objectid)
否则,按照peter.petrov编写的那样计算MD5校验和是一个好主意。请注意,您编写的两个标识符
[B@3a56f631
[B@233d28e3
它们是不同的,因为它们属于两个不同的对象。这些是对象标识符,而不是字节码。两个对象在逻辑上可以相等,即使它们不是完全相同的对象(例如,它们具有不同的objectid)
否则,按照peter.petrov编写的那样计算MD5校验和是一个好主意。请注意,您编写的两个标识符
[B@3a56f631
[B@233d28e3
它们是不同的,因为它们属于两个不同的对象。这些是对象标识符,而不是字节码。两个对象在逻辑上可以相等,即使它们不是完全相同的对象(例如,它们具有不同的objectid)
否则,像peter.petrov写的那样计算MD5校验和是个好主意。不幸的是,对于PDF来说,拥有“完全相同的文件”和拥有“视觉上完全相同”的文件之间有很大的区别。所以第一个问题是你在寻找什么 一个非常简单的例子是,PDF文件中的信息可以压缩或不压缩,并且可以使用不同的压缩过滤器进行压缩。以一个部分内容未压缩的文件为例,并使用ZIP压缩过滤器压缩该内容,将得到两个在字节级别上非常不同但在视觉上非常相同的文件 因此,您可以做许多不同的事情来比较PDF文件: 1) 如果你想检查你是否有“相同的文件”,读入它们并计算某种校验和,正如彼得·彼得罗夫之前回答的那样 2) 如果您想知道文件在视觉上是否相同,最常用的方法是某种渲染。将所有页面呈现为图像并比较图像。实际上,这并不像听起来那么简单,有简单的(例如callas pdfToolbox)和复杂的(例如Global Vision DigitalPage)应用程序都实现了某种“相同”算法(注意,我与这两个供应商都有关联)
因此,首先要很好地定义您到底需要什么,然后仔细选择哪种方法最有效。不幸的是,对于PDF来说,拥有“完全相同的文件”和拥有“视觉上完全相同”的文件之间有很大的区别。所以第一个问题是你在寻找什么 一个非常简单的例子是,PDF文件中的信息可以压缩或不压缩,并且可以使用不同的压缩过滤器进行压缩。以一个部分内容未压缩的文件为例,并使用ZIP压缩过滤器压缩该内容,将得到两个在字节级别上非常不同但在视觉上非常相同的文件 因此,您可以做许多不同的事情来比较PDF文件: 1) 如果你想检查你是否有“相同的文件”,读入它们并计算某种校验和,正如彼得·彼得罗夫之前回答的那样 2) 如果您想知道文件在视觉上是否相同,最常用的方法是某种渲染。将所有页面呈现为图像并比较图像。在p