我正在使用Ionic的本机Zip插件,并正在为Android开发一个应用(从https://ionicframework.com/docs/native/zip/开始)。我从服务器下载了一个zip文件,并将其存储在file.externalDataDirectory中。我可以在文件夹中找到它,然后在设备上手动将其解压缩。但是,当我尝试使用插件以编程方式将其解压缩时,它始终返回-1,这意味着它失败了。
这是下面的代码,甚至没有调用progress函数。文件名包含下划线。
this.zip.unzip(this.file.externalDataDirectory + "my_file.zip", this.file.externalDataDirectory,
(progress) => console.log('Unzipping, ' + Math.round((progress.loaded / progress.total) * 100) + '%'))
.then((result) => {
if(result === 0) console.log('SUCCESS');
if(result === -1) console.log('FAILED');
})
我也尝试对路径进行硬编码,但结果是相同的:
this.zip.unzip(" file:///storage/emulated/0/Android/data/com.myapp/my_file.zip", "file:///storage/emulated/0/Android/data/com.myapp/",
(progress) => console.log('Unzipping, ' + Math.round((progress.loaded / progress.total) * 100) + '%'))
.then((result) => {
if(result === 0) console.log('SUCCESS');
if(result === -1) console.log('FAILED');
})
请问有人可以帮我吗?
编辑:我发现仅在zip中的文件名称为俄语时才会出现问题。 zip存档名称本身仅包含数字。
答案 0 :(得分:0)
好的,所以我想出了解决方案。我已经修改了插件的Java文件,并向构造函数Charset.forName(“ CP1251”)添加了一个charset参数:
ZipInputStream zis = new ZipInputStream(inputStream, Charset.forName("CP1251"));