【鸿蒙Next】文件处理(压缩)

  // 获取日志文件的uri数组
  static async compressAndUploadLogFiles(){
    console.log(`日志目录 ${Logger.logDirPath}`)
    let list = fs.listFileSync(Logger.logDirPath)
    let tmpList: string[]
    tmpList = list.map((subFile)=>{
      return `${Logger.logDirPath}/${subFile}`
    })
    console.log(`日志目录子文件 ${tmpList}`)
    await ZipUpload.zipUploadFiles(tmpList)
  }

  static qtalk_log_zip_path() {
    let cacheDir = getContext().cacheDir;
    return `${cacheDir}/${logZipName}`
  }


  // 传入需要上传的文件uri 数组,拷贝到临时目录,压缩
  static async zipUploadFiles(fileUris: string[]): Promise {
    let cacheDir = getContext().cacheDir;
    let tempDir = fs.mkdtempSync(`${cacheDir}/XXXXXX`);
    for (let uri of fileUris) {
      let fileName = uri.split('/').pop();
      fs.copyFileSync(uri, `${tempDir}/${fileName}`);
    }
    let options = {
      level: zlib.CompressLevel.COMPRESS_LEVEL_DEFAULT_COMPRESSION,
      memLevel: zlib.MemLevel.MEM_LEVEL_DEFAULT,
      strategy: zlib.CompressStrategy.COMPRESS_STRATEGY_DEFAULT_STRATEGY
    } as zlib.Options;
    await zlib.compressFile(tempDir, ZipUpload.qtalk_log_zip_path(), options);
    fs.rmdirSync(tempDir);

    await ZipUpload.checkAndUpload()
    // this.waitList.push(`${cacheDir}/test.zip`);
  }

你可能感兴趣的:(鸿蒙,文件目录压缩包)