当前位置: 首页 > news >正文

东莞网站建设设计价格湖南营销型网站建设 j磐石网络

东莞网站建设设计价格,湖南营销型网站建设 j磐石网络,国外中文网站排行,做外贸怎么推广Java12引入了一个新的方法 mismatch,它属于java.nio.file.Files类。此方法用于比较两个文件的内容,并返回第一个不匹配字节的位置。如果两个文件完全相同,则返回-1。 Files.mismatch 方法声明 public static long mismatch(Path path1, Pat…

Java12引入了一个新的方法 mismatch,它属于java.nio.file.Files类。此方法用于比较两个文件的内容,并返回第一个不匹配字节的位置。如果两个文件完全相同,则返回-1

Files.mismatch 方法声明

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

参数说明:

  • path1: 第一个文件的路径。
  • path2: 第二个文件的路径。

返回值说明:

  • 返回两个文件之间第一个不匹配字节的位置。如果两个文件完全相同,则返回 -1
  • 如果一个文件是另一个文件的前缀,则返回较短文件的长度。

异常说明:

  • IOException: 如果发生I/O错误,抛出IOException异常,例如文件不存在。

Files.mismatch的使用

以下是一个使用Files.mismatch方法的示例代码:

package com.morris.java12;import java.io.FileWriter;
import java.io.IOException;
import java.net.URISyntaxException;
import java.nio.file.Files;
import java.nio.file.Path;/*** 使用FileMismatch对文件进行比较*/
public class FileMismatchDemo {public static void main(String[] args) throws IOException {FileWriter a1 = new FileWriter("d:/a1.txt");a1.write("abc中国");a1.write("efg");a1.write("123");a1.close();FileWriter a2 = new FileWriter("d:/a2.txt");a2.write("abc中国"); // 中文占3个字节a2.write("efg");a2.write("124");a2.close();long ap = Files.mismatch(Path.of("d:/a1.txt"), Path.of("d:/a2.txt"));System.out.println("a1 and a2 mismatch: " + ap); // 14FileWriter b1 = new FileWriter("d:/b1.txt");b1.write("abc");b1.close();FileWriter b2 = new FileWriter("d:/b2.txt");b2.write("abc");b2.close();long bp = Files.mismatch(Path.of("d:/b1.txt"), Path.of("d:/b2.txt"));System.out.println("b1 and b2 mismatch: " + bp); // -1}
}

运行结果如下:

a1 and a2 mismatch: 14
b1 and b2 mismatch: -1

如果文件内容相同,mismatch方法将返回-1

如果文件内容不同,mismatch方法将返回第一个不匹配字节的位置。

如果文件长度不同,如果一个文件是另一个文件的前缀,mismatch方法将返回较短文件的长度。

这个新方法对文件比较非常有用,可以大大简化需要逐字节比较文件内容的代码。

Files.mismatch的源码分析

public static long mismatch(Path path, Path path2) throws IOException {if (isSameFile(path, path2)) {return -1;}byte[] buffer1 = new byte[BUFFER_SIZE];byte[] buffer2 = new byte[BUFFER_SIZE];try (InputStream in1 = Files.newInputStream(path);InputStream in2 = Files.newInputStream(path2)) {long totalRead = 0;while (true) {int nRead1 = in1.readNBytes(buffer1, 0, BUFFER_SIZE);int nRead2 = in2.readNBytes(buffer2, 0, BUFFER_SIZE);int i = Arrays.mismatch(buffer1, 0, nRead1, buffer2, 0, nRead2);if (i > -1) {return totalRead + i;}if (nRead1 < BUFFER_SIZE) {// we've reached the end of the files, but found no mismatchreturn -1;}totalRead += nRead1;}}
}

底层使用了Arrays.mismatch()比较两个文件的字节数组。

http://www.yayakq.cn/news/653379/

相关文章:

  • 网站建设书本晋城网站制作公司怎么选
  • 360免费建站官方网站模板下载工具
  • 档案网站开发网站建设费用组成
  • 冬奥会建设官方网站做网站公司汉狮
  • 怎么制作婚介网站seo人员要先对网站进行诊断
  • 刘晓忠 网站建设做动漫网站的小说
  • 电信网站开发语言主要用什么北京门户网站建设公司
  • 个人自建网站国外对旅游网站建设的现状
  • 临沂企业建站模板做jsp网站用哪些软件下载
  • 桂林同城网站怎么让百度蜘蛛围着网站爬取
  • 如何让百度搜到网站国内的跨境电商平台有哪些
  • 网站改版建设的合同现在建一个网站一年费用只要几百元
  • APP和网站是一样吗微信公众号怎么分享wordpress
  • 网站开发推荐上海的做网站的公司
  • thinkphp 做门户网站淮南招聘网站建设
  • 天津网站制作套餐dynamik wordpress
  • 做高档衣服的网站长春 网站建设网络推广网页设计
  • 商城网站建设的优点互联网营销师报名
  • 长春建站免费模板移动终端的网站
  • 网监网站备案宿州网站建设电话
  • 类似于微博网站怎么做google搜索引擎官网
  • 上海自聊自做网站邯郸专业做网站哪里有
  • 网站首页的功能需求分析在建设银行网站申请完信用卡
  • 淘宝客网站开发服务商常规网站建设价格实惠
  • 网站建设的行业代码是多少钱无网站做百度推广
  • 招聘网站建设价格淘宝客网站做的好的
  • 源代码怎么做网站潜江资讯网免费发布信息
  • 抛丸机网站怎么做做色流网站要注意什么地方
  • 个人如何学习做网站wordpress换ip
  • 网站二级菜单是什么原因wordpress 整站模板