鸿蒙里如何通过代码解压zip文件?

比如在应用里从服务端下载了zip的文件,需要解析压缩的文件,应该如何解压呢?

阅读 533
1 个回答

如果是解压带密码的 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
            });
          });
      };
    };
  };
};
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
logo
HarmonyOS
子站问答
访问
宣传栏