我有一个问题。
我使用这段代码来读取 zip 文件的内容:
File file = new File(TogglesManager.EXTERNAL_STORAGE_THEMES_DIRECTORY+"filename.zip");
ZipFile zip = new ZipFile(file);
但是当我尝试使用 Assets 时,我遇到了 FileNotFoundException
。
要读取 Assets zip 文件,我使用此代码:
File file = c.getFileStreamPath("assetsFile.zip");
ZipFile zip = new ZipFile(file);
"file"不为空,因为如果我写 file.getName();
我会看到正确的文件名。
我不想使用 ZipInputStream
类,而只想使用 ZipFile
最佳答案
您无法使用普通文件操作访问 Assets 。你将不得不使用
AssetManager assetManager = mContext.getAssets();
InputStream is = assetManager.open("assetsFile.zip");
但由于 ZipFile 没有将 InputStream 作为参数,因此您必须将 Assets 文件复制到内部存储,然后使用 File
据我所知,apk 是压缩的,因此将压缩文件存储在 Assets 中可能不会改变使用的存储空间,因此您可能不需要在 Assets 中使用 zipfile。
关于Android:使用 Assets 文件时出现 ZipFile、FileNotFoundException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13460147/