java比较两个文件是否相同

java比较两个文件是否相同

1.需要引入的Jar包

<dependency>
	<groupId>commons-codec</groupId>
	<artifactId>commons-codec</artifactId>
	<version>1.11</version>
</dependency>
/**
 * 判断两个文件是否相等(我这个文件一个是参数另一个是从集合里获取的)
 * @return boolean true 相等
 * @throws IOException
 */
private static boolean chechFile(File file1){
	InputStream fileStream1 = null;
	InputStream fileStream2 = null;
	try {
		Iterator<File> it = fileList.iterator();
		while (it.hasNext()) {
			File file2 = it.next();
			if (file1.length() != file2.length()) {
				return false;
			}
			//根据文件名判断的可以根据需求进行修改
			if(file1.getName().equals(file2.getName())){
				return true;
			}
			fileStream1 = new FileInputStream(file1);
			fileStream2 = new FileInputStream(file2);
			//InputStream 转 byte[]
			byte[] fileByteArray = new byte[fileStream1.available()];
			return isSameFiles(fileByteArray, new byte[fileStream2.available()]);
		}
		return false;
	}catch (Exception e){
		e.printStackTrace();
		log.info("比较文件出错{}",e);
		return false;
	} finally {
		//记得关闭文件流否则就没办法操作文件了
		try {
			if (fileStream1 != null){
				fileStream1.close();
			}
			if (fileStream2 != null){
				fileStream2.close();
			}
		}catch (Exception e){
			e.printStackTrace();
			log.info("关闭异常{}",e);
		}

	}
}



/**
 * 验证两个文件字节流是否相等
 * @return boolean true 相等
 * @throws IOException
 */
private static boolean isSameFiles(byte[] fileByte1, byte[] fileByte2) {
	String firstFileMd5 = DigestUtils.md5Hex(fileByte1);
	String secondFileMd5 = DigestUtils.md5Hex(fileByte2);
	if (firstFileMd5.equals(secondFileMd5)) {
		System.out.println("---- equals ------ md5 " + firstFileMd5);
		return true;
	} else {
		System.out.println(firstFileMd5 + " is firstFileMd5 ++ unequal ++ secondFileMd5 = " + secondFileMd5);
		return false;
	}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值