如果是解压带密码的 zip 文件,可以使用 @ohos/jszip 三方组件:https://gitee.com/openharmony-tpc/openharmony_tpc_samples/tre...。如果是解压 rawfile 中的 zip 文件,可以通过 buffer 将 rawfile 文件内容 copy 到沙箱路径,再对沙箱路径下的压缩文件进行解压。以下是关键代码供参考:import fs from '@ohos.file.fs'; import { Context } from '@ohos.abilityAccessCtrl'; import zlib from '@ohos.zlib'; @Entry @Component struct Index { @State context:Context =getContext(this); build() { Row() { Column() { Button('复制 zip 到沙箱,并解压 zip', { type: ButtonType.Normal, stateEffect: true }) .borderRadius(8) .backgroundColor(0x317aff) .width(90) .height(40) .onClick(()=>{ /** * 通过 fd 来进行拷贝,避免文件过大的内存占用问题 * data.fd 是 hap 包的 fd,data.offset 表示目标文件在 hap 包中的偏移,data.length 表示目标文件的长度 */ this.context.resourceManager.getRawFd("picture.zip", (err, data) => { let sandboxPath = this.context.filesDir console.log("沙箱路径:" + sandboxPath) fs.mkdtempSync(sandboxPath + "/XXXXXX") let filePath = this.context.tempDir }); }); }; }; }; };
如果是解压带密码的 zip 文件,可以使用 @ohos/jszip 三方组件:https://gitee.com/openharmony-tpc/openharmony_tpc_samples/tre...。如果是解压 rawfile 中的 zip 文件,可以通过 buffer 将 rawfile 文件内容 copy 到沙箱路径,再对沙箱路径下的压缩文件进行解压。以下是关键代码供参考: