本次学习遗留一个问题:压缩/解压缩的路径怎么获取??希望知道的小伙伴能给说一下,私聊评论皆可。
代码相对来说比较简单
//需要导入的头文件
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中固定的方法才能获取。
最后,希望读到此处的你,如果知道问题的原因请不吝赐教,或者说怎么直接拿到我项目中的资源的沙箱地址,然后,压缩后的文件去哪了