确定两个文件是否存储相同的内容
2022-08-31 13:05:28
您将如何编写一个java函数来确定两个给定路径是否指向存储相同内容的文件?当然,首先,我会检查文件大小是否相同。这是存储相同内容的必要条件。但是,我想听听你的方法。如果两个文件存储在同一个硬盘驱动器上(就像我的大多数情况一样),这可能不是在两个流之间跳转太多次的最佳方法。boolean sameContent(Path file1,Path file2)
您将如何编写一个java函数来确定两个给定路径是否指向存储相同内容的文件?当然,首先,我会检查文件大小是否相同。这是存储相同内容的必要条件。但是,我想听听你的方法。如果两个文件存储在同一个硬盘驱动器上(就像我的大多数情况一样),这可能不是在两个流之间跳转太多次的最佳方法。boolean sameContent(Path file1,Path file2)
Apache commons IO和api的确切方法在这里。FileUtils.contentEquals
试试下面这些方法:
File file1 = new File("file1.txt");
File file2 = new File("file2.txt");
boolean isTwoEqual = FileUtils.contentEquals(file1, file2);
在实际进行比较之前,它会执行以下检查:
如果您不想使用任何外部库,则只需将文件读入字节数组并进行比较(在Java-7之前不起作用):
byte[] f1 = Files.readAllBytes(file1);
byte[] f2 = Files.readAllBytes(file2);
通过使用 Arrays.equals。
如果文件很大,则不应将整个文件读入数组,而应使用并逐块读取文件,如此处所述。BufferedInputStream