【HarmonyOS NEXT】RawFile文件如何计算MD5,并copy资源到files目录

 【关键字】

md5 / RawFile / 资源拷贝 / files目录

【问题描述】

鸿蒙提供了一个 Hash.hash(filePath, "md5") 的接口可以计算文件的MD5值,但是针对RawFile的资源,只能通过context.resourceManager 进行访问,由于获取不到其实际的路径,该如何计算其文件的MD5值呢?

同时,如果想把RawFile的资源拷贝到files目录该如何做?

具体的目标场景如下:

一些资源以线上的为准,但应用安装的时候会随包兜底附带,如果相关资源判定为最新的(通过MD5值比较),就期望不更新了。

【解决方案】

可先将rawfile下的文件拷贝到应用的沙箱路径,然后通过Hash.hash的接口计算文件的hash值,参考代码如下:

Text('拷贝文件到沙箱').fontSize('30vp').onClick(() => {
getContext(this).resourceManager.getRawFileContent('img/1-beer.png', (_err, value) => {
let myBuffer:ArrayBufferLike = value.buffer
let context = getContext(this);
//沙箱路径
let filePath = context.filesDir + "/67.png";
console.log("testTag-filePath:" + filePath);
let file = fs.openSync(filePath, fs.OpenMode.READ_WRITE | fs.OpenMode.CREATE);
let writeLen = fs.writeSync(file.fd, myBuffer);
console.info("testTag-write data to file succeed and size is:" + writeLen);
fs.closeSync(file);

Hash.hash(filePath, "sha256").then((str: string) => {
console.info("calculate file hash succeed:" + str);
}).catch((err: BusinessError) => {
console.error("calculate file hash failed with error message: " + err.message + ", error code: " + err.code);
});
});
})

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值