本次学习遗留一个问题:压缩/解压缩的路径怎么获取??希望知道的小伙伴能给说一下,私聊评论皆可。
一、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 = {//默认压缩程度,可以设置最快、最大压缩程度、压缩率为0level: 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中固定的方法才能获取。
最后,希望读到此处的你,如果知道问题的原因请不吝赐教,或者说怎么直接拿到我项目中的资源的沙箱地址,然后,压缩后的文件去哪了