Java 教程

Java 控制语句

面向对象编程

Java 内置类

Java 文件处理

Java 错误和异常

Java 多线程

Java 同步

Java 网络

Java 集合

Java 接口

Java 数据结构

Java 集合算法

高级 Java

Java 杂项

Java API 和框架

Java 类引用

Java 有用资源

Java - Files mismatch() 方法



Files mismatch() 方法

mismatch() 方法从 Java 12 开始在 Files 中可用。它提供了一种简单的方法来比较两个文件。

语法

Files.mismatch() 方法的语法如下:

public static long mismatch(Path path, Path path2) throws IOException

其中

  • 如果没有不匹配,则返回 1L,否则返回第一个不匹配的位置。

  • 如果文件大小不匹配或字节内容不匹配,则会考虑不匹配。

在以下情况下,文件被认为是相同的。

  • 如果两个位置都指向同一个文件。

  • 如果路径相同且文件不存在,则文件被认为是相同的。

  • 如果文件大小相同,并且第一个文件的每个字节都与第二个文件的相应字节匹配。

参数

path - 第一个文件路径

path2 - 第二个文件路径

返回值

第一个不匹配的位置,如果不存在不匹配,则返回 -1L。

异常

IOException - 如果发生 I/O 错误。

SecurityException - 在默认提供程序的情况下,如果安装了安全管理器,则会调用 checkRead() 方法以检查对两个文件的读取访问权限。

Files 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 {
      // 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

示例:文件中的不匹配识别

在此示例中,我们在临时目录中创建了两个 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
广告