从 Java 12 开始,Files
类中提供了 mismatch()
方法。它提供了一种比较两个文件的简单方法。
句法
Files.mismatch()
方法的语法是 -
public static long mismatch(Path path, Path path2) throws IOException
其中,
-
如果没有不匹配则返回
-1L
,否则返回第一个不匹配的位置。
-
如果文件大小不匹配或字节内容不匹配,则视为不匹配。
-
在下列情况下,文件被视为相同:
-
-
-
如果文件大小相同,并且第一个文件的每个字节都与第二个文件的相应字节匹配。
参数
返回值
第一个不匹配的位置,如果没有不匹配则为 -1L
。
异常
-
IOException
— 如果发生 I/O 错误。
-
SecurityException
— 在默认提供程序的情况下,安装了安全管理器,将调用 checkRead()
方法来检查对两个文件的读取访问权限。
文件 mismatch() 方法示例
示例:文件中没有不匹配项
在此示例中,我们在临时目录中创建了两个 .txt
文件,然后将相同的内容写入这两个文件。使用 Files.mismatch()
方法比较两个文件是否相同。根据返回的结果,我们将打印消息。由于两个文件的内容相同,因此将打印一条消息“文件匹配”。
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
public class APITester {
public static void main(String[] args) throws IOException {
Path path1 = Files.createTempFile("file1", ".txt");
Path path2 = Files.createTempFile("file2", ".txt");
Files.writeString(path1, "tutorialspoint");
Files.writeString(path2, "tutorialspoint");
long mismatch = Files.mismatch(path1, path2);
if(mismatch == -1L) {
System.out.println("Files matched");
} else {
System.out.println("Mismatch occurred in file1 and file2 at : " + mismatch);
}
path1.toFile().deleteOnExit();
path2.toFile().deleteOnExit();
}
}
输出:
Files matched
示例:文件中的不匹配识别
在这个例子中,我们在临时目录中创建了两个 .txt
文件,然后将不同的内容写入文件。使用 Files.mismatch()
方法,比较两个文件是否相同。根据返回的结果,我们将打印消息。由于两个文件的内容不同,mismatch
方法返回第一个不匹配的位置,并将其打印为输出。
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
public class APITester {
public static void main(String[] args) throws IOException {
Path path1 = Files.createTempFile("file1", ".txt");
Path path2 = Files.createTempFile("file2", ".txt");
Files.writeString(path1, "tutorialspoint");
Files.writeString(path2, "tutorialspoint Java 12");
long mismatch = Files.mismatch(path1, path2);
if(mismatch == -1L) {
System.out.println("Files matched");
} else {
System.out.println("Mismatch occurred in file1 and file2 at : " + mismatch);
}
path1.toFile().deleteOnExit();
path2.toFile().deleteOnExit();
}
}
输出:
Mismatch occurred in file1 and file2 at : 14