Java 简明教程
Java - Files mismatch() Method
Files mismatch() Method
mismatch() 方法从 Java 12 起在 Files class 中可用。它提供了一种比较两个文件的简便方法。
Syntax
*Files.mismatch()*方法的语法为:
public static long mismatch(Path path, Path path2) throws IOException
其中
-
如果不存在不匹配项,则返回 1L,否则返回第一个不匹配项的位置。
-
如果文件大小不匹配或字节内容不匹配,则会考虑不匹配项情况。
在以下情况下,文件被认为是相同的。
-
如果两个位置指向相同的文件。
-
如果路径相同且文件不存在,则文件会被认为是相同的。
-
如果文件具有相同大小并且第一个文件的每个字节都与第二个文件的相应字节匹配。
Exceptions
IOException− 如果发生 I/O 错误。
SecurityException− 在默认提供程序的情况下,如果安装了安全管理器,将调用 checkRead() 方法来检查对两个文件的读取访问。
Files mismatch() Method Examples
Example: No Mismatch in Files
在此示例中,我们在临时目录中创建了两个 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 {
// create two files in temp directory
Path path1 = Files.createTempFile("file1", ".txt");
Path path2 = Files.createTempFile("file2", ".txt");
// write same content to both the files
Files.writeString(path1, "tutorialspoint");
Files.writeString(path2, "tutorialspoint");
// check files for Mismatch,
// being same content, it should return -1.
long mismatch = Files.mismatch(path1, path2);
// print the message based on mismatch result
if(mismatch > 1L) {
System.out.println("Mismatch occurred in file1 and file2 at : " + mismatch);
}else {
System.out.println("Files matched");
}
// delete the files
path1.toFile().deleteOnExit();
path2.toFile().deleteOnExit();
}
}
让我们编译并运行上述程序,这将生成以下结果 −
Files matched
Example: Mismatch Identification in Files
在此示例中,我们在临时目录中创建了两个 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 {
// create two files in temp directory
Path path1 = Files.createTempFile("file1", ".txt");
Path path2 = Files.createTempFile("file2", ".txt");
// write same content to both the files
Files.writeString(path1, "tutorialspoint");
Files.writeString(path2, "tutorialspoint Java 12");
// check files for Mismatch,
// being different content, it should return index of first mismatch.
long mismatch = Files.mismatch(path1, path2);
// print the message based on mismatch result
if(mismatch > 1L) {
System.out.println("Mismatch occurred in file1 and file2 at : " + mismatch);
}else {
System.out.println("Files matched");
}
// delete the files
path1.toFile().deleteOnExit();
path2.toFile().deleteOnExit();
}
}
让我们编译并运行上述程序,这将生成以下结果 −
Mismatch occurred in file1 and file3 at : 14