HarmonyOS开发中 离线包下载解压问题?

我现在下载下来的是zip,如何解压zip到指定目录?

阅读 631
1 个回答

可以通过 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 
            });
          });
      };
    };
  };
};
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题