我的资产文件夹中有受密码保护的zip文件。 Android zip库不支持受密码保护的文件,所以我使用 zip4j 库。但是我无法从资产中提取文件。
ZipFile zipFile = new ZipFile("file:///android_asset/db.zip");
zipFile.setPassword("qwe");
答案 0 :(得分:-1)
file:///android_asset
几乎只针对WebView
。
如果zip4j的ZipFile
构造函数带有InputStream
,您可以通过getAssets().open("db.zip")
获取资源信息流。
否则,您首先需要将db.zip
从资产复制到本地文件(例如,在getCacheDir()
中),然后使用zip4j,然后删除本地db.zip
文件。
或者,因为破解ZIP存档上的加密是微不足道的(最后我检查过),将内容解压缩到项目的assets/
目录中并更直接地使用它们,而不是将受密码保护的ZIP放入{{ 1}}。