jdk12 jdk1.8_JDK 12的Files.mismatch方法

jdk12 jdk1.8

JDK 12Files类引入了一种新方法。 方法Files.mismatch(Path,Path)已通过JDK-8202302引入JDK 12,并在JDK 12 Early Access Build 20 (支持新{@systemProperty} Javadoc标记的相同早期访问版本)中可用

JDK-8202302 [“用于比较文件的(fs)New Files.mismatch方法”]添加了Files.mismatch(Path,Path)方法“以比较两个文件的内容以确定它们之间是否存在不匹配”,并且可以用于确定“两个文件是否相等”。 曾经有一次添加File.isSameContent()方法的讨论 ,但是由于它与“ Arrays.mismatchBuffer.mismatch方法”的一致性,因此决定使用Files.mismatch(Path,Parh)

下一个代码清单包含一个简单的Java类,该类演示了新的Files.mismatch(Path,Path)并将其与Files.isSameFile(Path,Path)进行对比。

package dustin.examples.jdk12.files;

import java.nio.file.Files;
import java.nio.file.Path;

import static java.lang.System.out;

/**
 * Demonstrate {@code Files.mismatch(Path,Path)} introduced with JDK 12
 * and useful for determining if two files have the same content even
 * if they're not the same files.
 */
public class FilesDemo
{
   public static void main(final String[] arguments) throws Exception
   {
      if (arguments.length < 2)
      {
         out.println("USAGE: FilesDemo <file1Name> <file2Name>");
         return;
      }

      final String file1Name = arguments[0];
      final Path file1Path = Path.of(file1Name);
      final String file2Name = arguments[1];
      final Path file2Path = Path.of(file2Name);

      out.println("\nFiles '" + file1Name + "' and '" + file2Name + "' are "
         + (Files.isSameFile(file1Path, file2Path) ? "the" : "NOT the")
         + " same.\n\n");
      out.println("\nFiles '" + file1Name + "' and '" + file2Name + "' are "
         + (Files.mismatch(file1Path, file2Path) == -1 ? "the" : "NOT the")
         + " same content.\n\n");
   }
}

当针对各种文件组合执行上述代码时,它将提供在下表中捕获的结果。

文件关系 Files.isSameFile(Path,Path) Files.mismatch(Path,Path)
同一文件 true true
复制的文件 false true
不同的文件 false false
软链接 true true
硬连结 true true

添加Files.mismatch(Path,Path)是完成JDK-6852033 [“使常见的I / O任务更容易执行的输入/输出方法”]的又一个步骤,它使确定不属于该文件的两个文件的时间更加容易。相同文件仍然“相等”或具有相同内容。

翻译自: https://www.javacodegeeks.com/2018/11/jdk-12s-files-mismatch-method.html

jdk12 jdk1.8

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值