校验文件一致性,用HarmonyOS 怎么实现?

File tempFile = new File(tempDir, bean.getBundleName());
DLog.INSTANCE.i("rn downloadModule() temp file path = " + tempFile.getPath());// /data
BufferedOutputStream output = new BufferedOutputStream(new FileOutputStream(tempFile));
MessageDigest md = DigestUtils.getMd5Digest();
DigestInputStream inputStream = new DigestInputStream(response.body().byteStream(), md);
IOUtils.copy(inputStream, output);
String checksum = md.digest()

以上代码是java用来校验文件一致性的代码,有没有HarmonyOSapi可以实现

HarmonyOS
7天前
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
fox280

可以通过生成文件的MD5校验和,来判断文件的一致性

计算文件的MD5值,demo如下:

static async calFileMd5(fileUrl:string)
{
  let md = cryptoFramework.createMd('MD5');
  let file = fs.openSync(fileUrl, fs.OpenMode.READ_ONLY);
  let arrayBuffer = new ArrayBuffer(2048);
  let len: number = 0;
  let position: number = 0;
  do {
    len = fs.readSync(file.fd, arrayBuffer, { offset: position });
    if (len > 0) {
      let uint8Array = new Uint8Array(arrayBuffer.slice(0, len));
      let updateMessageBlob: cryptoFramework.DataBlob = { data: uint8Array };
      await md.update(updateMessageBlob);
      position += len;
    }
  } while (len > 0);
  fs.closeSync(file);
  let mdOutput = await md.digest();
  console.info("...calFileMd5: " + buffer.from(mdOutput.data).toString('hex'));
}

可以参考此篇文档:

HarmonyOS 开发中文件的哈希处理:

https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/js-apis-file-hash-V5

计算文件的MD5值,参考链接:

https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/crypto-generate-message-digest-V5

分享
微博
QQ
微信
回复
7天前
相关问题
分布式数据库一致可以分为哪些?
604浏览 • 1回复 待解决
HarmonyOS 怎么设置组件的宽高一致
126浏览 • 1回复 待解决
redis如何实现双读一致问题?
3130浏览 • 1回复 待解决
签名不一致报错怎么回事?
2788浏览 • 1回复 待解决
HarmonyOS 单位不一致问题
121浏览 • 1回复 待解决
启动和调试的行为不一致
349浏览 • 1回复 待解决
依赖hsp出包,报错versionname不一致
156浏览 • 1回复 待解决
water flow 出现gap不一致问题
768浏览 • 1回复 待解决
HarmonyOS 升级NEXT后oaid是否是一致
125浏览 • 1回复 待解决