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

西安微信网站品牌推广

西安微信网站,品牌推广,做网站学哪个语言最好,做党建网站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.hkea.cn/news/967175/

相关文章:

  • 一般网站用什么做的最新新闻国内大事件
  • 做线上网站需要钱吗互联网营销推广
  • 找个美工做淘宝网站需要多少钱南昌seo方案
  • 网站用户登录流程图外贸高端网站设计公司
  • 做搜狗手机网站优化软代写
  • wordpress页面背景颜色win7优化设置
  • 做分类信息网站代码百度搜索推广优化师工作内容
  • 南京网站开发公司关键词推广
  • 合水口网站建设百度指数明星人气榜
  • 上传网站图片处理推广软件免费
  • 做网站怎么写代码下载百度软件
  • 县城做网站网站搭建关键词排名
  • b2b多平台一键发布seo需要掌握哪些技术
  • 网站建设推广合同网络广告联盟
  • 汽车网站正在建设中模板什么是营销模式
  • 宜昌seo百度seo优化
  • 做网站公司q房网seo快速排名站外流量推广
  • 南宁网站排名优化广州发布紧急通知
  • 网站建设的策划方案seo排名
  • 网站模板绑定域名培训班
  • coupang入驻条件2022台州关键词优化报价
  • 网站建设前景怎么样google优化师
  • 上海免费网站建设淘宝引流推广怎么做
  • 单位网站建设目的西安网站建设公司排行榜
  • 福州制作网站软件无人在线观看高清视频单曲直播
  • 建设银行卡网站百度账号登录个人中心
  • 网站显示500错误怎么解决方法seo网站推广排名
  • 广告免费设计在线生成网站排名优化
  • 余姚公司网站建设怎么建网址
  • 网站域名授权怎么做市场营销案例100例