HarmonyOS 鸿蒙Next 如何计算本地文件的CRC64

HarmonyOS 鸿蒙Next 如何计算本地文件的CRC64 如何计算本地文件的CRC64

4 回复
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的步骤:

  1. 导入相关模块:首先需要导入ohos.utils模块中的CRC64类。

    import { CRC64 } from 'ohos.utils';
    
  2. 创建CRC64实例:通过CRC64类的构造函数创建一个CRC64实例。

    let crc64 = new CRC64();
    
  3. 读取文件数据:使用鸿蒙的文件系统API读取文件数据。可以使用ohos.file.fs模块中的openSyncreadSync方法。

    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 });
    
  4. 更新CRC64计算:将读取到的文件数据更新到CRC64实例中。

    crc64.update(new Uint8Array(buffer, 0, readSize));
    
  5. 获取CRC64计算结果:最后调用digest方法获取CRC64计算结果。

    let crc64Result = crc64.digest();
    
  6. 关闭文件:使用closeSync方法关闭文件。

    fs.closeSync(file);
    

通过以上步骤,你可以在HarmonyOS中计算本地文件的CRC64值。

回到顶部