我有密码保护zip文件从资产文件夹。Android zip库不支持密码保护文件,所以我使用了zip4j库。但是我不能从资源中提取文件。
ZipFile zipFile = new ZipFile("file:///android_asset/db.zip");
zipFile.setPassword("qwe");
file:///android_asset
几乎就是WebView
的代名词。
如果zip4j有一个ZipFile
构造函数,它接受一个InputStream
,你可以通过getAssets().open("db.zip")
在你的资产上获得一个流。
否则,您首先需要将db.zip
从资产复制到本地文件(例如,在getCacheDir()
中),然后使用zip4j,然后删除本地db.zip
文件。
或者,由于破解ZIP存档的加密是微不足道的(上次我检查过),将内容解压缩到项目的assets/
目录并更直接地使用它们,而不是将密码保护的ZIP放入assets/
。