Java 简明教程
Java - Files mismatch() Method
Files mismatch() Method
mismatch() 方法从 Java 12 起在 Files class 中可用。它提供了一种比较两个文件的简便方法。
The mismatch() method is available in Files class from Java 12 onwards. It provides an easy way to compare two files.
Syntax
*Files.mismatch()*方法的语法为:
The syntax of the Files.mismatch() method is -
public static long mismatch(Path path, Path path2) throws IOException
其中
Where
-
If there is no mismatch then 1L is returned else position of first mismatch is returned.
-
Mismatch is accounted in case if file sizes are not matching or byte contents are not matching.
在以下情况下,文件被认为是相同的。
A file is considered identical in following cases.
-
If both locations are pointing to same file.
-
In case path is same and file is not present, files are considered same.
-
If files are of same size and each byte is first files matches with corresponding bytes of second file.
Parameters
path− 第一个文件的路径
path − the path to the first file
path2− 第二个文件的路径
path2 − the path to the second file
Exceptions
IOException− 如果发生 I/O 错误。
IOException − If an I/O error occurs.
SecurityException− 在默认提供程序的情况下,如果安装了安全管理器,将调用 checkRead() 方法来检查对两个文件的读取访问。
SecurityException − In the case of the default provider, and a security manager is installed, the checkRead() method is invoked to check read access to both files.
Files mismatch() Method Examples
Example: No Mismatch in Files
在此示例中,我们在临时目录中创建了两个 txt 文件,然后将相同内容写入到这两个文件中。使用 Files.mismatch() 方法将比较这两个文件是否相同。基于返回的结果,我们将打印消息。由于两个文件的内容相同,因此将打印一条消息“文件匹配”。
In this example, we’ve created two txt files in temporary directory and then written same content to both the files. Using Files.mismatch() method, both files are compared to be identical or not. Based on result returned, we’re printing the message. As both file contents are same, a message will be printed as "Files matched".
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();
}
}
让我们编译并运行上述程序,这将生成以下结果 −
Let us compile and run the above program, this will produce the following result −
Files matched
Example: Mismatch Identification in Files
在此示例中,我们在临时目录中创建了两个 txt 文件,然后将不同的内容写入到这两个文件中。使用 Files.mismatch() 方法将比较这两个文件是否相同。基于返回的结果,我们将打印消息。由于两个文件的内容不同,因此不匹配方法将返回第一个不匹配项的位置,该位置将打印为输出。
In this example, we’ve created two txt files in temporary directory and then written different content to the files. Using Files.mismatch() method, both files are compared to be identical or not. Based on result returned, we’re printing the message. As both file contents are different, mismatch method returns the position of first mismatch which will be printed as the output.
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();
}
}
让我们编译并运行上述程序,这将生成以下结果 −
Let us compile and run the above program, this will produce the following result −
Mismatch occurred in file1 and file3 at : 14