鸿蒙开发之压缩/解压缩

发布时间:2023年12月20日

本次学习遗留一个问题:压缩/解压缩的路径怎么获取??希望知道的小伙伴能给说一下,私聊评论皆可。

一、API使用

代码相对来说比较简单

//需要导入的头文件
import zlib from '@ohos.zlib'

//压缩函数
function zipFile() {

  let rawfile = '/data/app/el1/bundle/public/com.example.myapplication/entry/resources/rawfile'

  //压缩文件的地址
  let inFile = rawfile + '/test.txt'
  let outFile = rawfile + '/test.zip'
  console.log('压缩路径是'+inFile)
  console.log('压缩zip路径是'+outFile)

  let options = {
    //默认压缩程度,可以设置最快、最大压缩程度、压缩率为0
    level: zlib.CompressLevel.COMPRESS_LEVEL_DEFAULT_COMPRESSION,
    //压缩过程中内存使用情况,默认、最大、最小
    memLevel: zlib.MemLevel.MEM_LEVEL_DEFAULT,
    //压缩的策略,这里是默认
    strategy: zlib.CompressStrategy.COMPRESS_STRATEGY_DEFAULT_STRATEGY
  }

  try {
    zlib.compressFile(inFile, outFile, options).then((data) => {
      //成功的回调,反正我是找不到压缩完的文件
      console.info('compressFile success');
    }).catch((errData) => {
      console.log(`errData is errCode:${errData.code}  message:${errData.message}`);
    })
  } catch(errData) {
    console.log(`errData is errCode:${errData.code}  message:${errData.message}`);
  }
}

解压类似,方法名称替换成zlib.decompressFile即可。

二、问题

如代码注释,我开始把要压缩的test.txt文件放到了rawfile文件中,然后一顿操作,发现没有产出相应的压缩包。然后,又各种移动还是不行。虽然API调用成功了。

看官方文档

好,你跟我说沙箱地址可以通过context获取是吧,那我就去找获取沙箱路径方式,官方如下

什么鬼,你让我在Ability中获取沙箱地址,难道我在一个组件中不能获取沙箱地址??我不信邪的在组件内获取沙箱地址,发现getContext(this).filesDir,调用后报错,说方法找不到,打印发现context为空。。。。。

那我就在Ability中定义一个const字符串,然后在其他组件访问又报错。。。

继续吐槽:官网的事例代码能不能贴近一点真实场景,这样的地址肯定是很多地方要获取的,怎么可能只在Ability中固定的方法才能获取。

最后,希望读到此处的你,如果知道问题的原因请不吝赐教,或者说怎么直接拿到我项目中的资源的沙箱地址,然后,压缩后的文件去哪了

文章来源:https://blog.csdn.net/Lu_Ca/article/details/135110742
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。