HarmonyOS 鸿蒙Next 如何计算本地文件的CRC64
HarmonyOS 鸿蒙Next 如何计算本地文件的CRC64 如何计算本地文件的CRC64
import { BusinessError, zlib } from '@kit.BasicServicesKit'
@Entry
@Component
struct BindSheetDemo {
build() {
Column() {
Button('获取CRC64')
.onClick(() => {
getContext(this).resourceManager.getMediaContent($r("app.media.app_icon")).then((data) => {
let arrayBuffer = data.buffer.slice(data.byteOffset, data.byteLength + data.byteOffset)
let checksum = zlib.createChecksumSync()
checksum.crc64(0, arrayBuffer).then((data) => {
console.info('crc64 success', data);
}).catch((errData: BusinessError) => {
console.error(`errData is errCode:${errData.code} message:${errData.message}`);
})
})
})
}
}
}
参考下上面代码试试,参考文档:https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/js-apis-zlib-V5#crc6412
更多关于HarmonyOS 鸿蒙Next 如何计算本地文件的CRC64的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
如果文件是个视频文件 很大的话 getContext(this).resourceManager.getMediaContent
获得的data岂不是很大 内存受不住 请问如何解决
如果文件很大,那只能分片读取,计算CRC64了。
鸿蒙提供了ohos.file.fs
,里面的fs.read
Api可以设置读取缓冲区,可以每次读取缓冲区之后,计算CRC64的值。fs文档:https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/js-apis-file-fs-V5#fsread。
在HarmonyOS(鸿蒙Next)中,计算本地文件的CRC64可以通过使用系统的API来实现。以下是使用鸿蒙API计算CRC64的步骤:
-
导入相关模块:首先需要导入
ohos.utils
模块中的CRC64
类。import { CRC64 } from 'ohos.utils';
-
创建CRC64实例:通过
CRC64
类的构造函数创建一个CRC64实例。let crc64 = new CRC64();
-
读取文件数据:使用鸿蒙的文件系统API读取文件数据。可以使用
ohos.file.fs
模块中的openSync
和readSync
方法。import fs from 'ohos.file.fs'; let filePath = 'path/to/your/file'; let file = fs.openSync(filePath, fs.OpenMode.READ_ONLY); let buffer = new ArrayBuffer(1024); let readSize = fs.readSync(file.fd, buffer, { offset: 0, length: buffer.byteLength });
-
更新CRC64计算:将读取到的文件数据更新到CRC64实例中。
crc64.update(new Uint8Array(buffer, 0, readSize));
-
获取CRC64计算结果:最后调用
digest
方法获取CRC64计算结果。let crc64Result = crc64.digest();
-
关闭文件:使用
closeSync
方法关闭文件。fs.closeSync(file);
通过以上步骤,你可以在HarmonyOS中计算本地文件的CRC64值。