Android:使用 Assets 文件时出现 ZipFile、FileNotFoundException

标签 android file zip assets

我有一个问题。

我使用这段代码来读取 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/

相关文章:

Cocoa - 来自压缩 plist 的 NSDictionary?

python - 创建一个包含 2 个 CSV 的 Zip

android - 定期更新标签

android - 无法合并 Dex - Android Studio 3.0

javascript - 所选插件似乎不适用于移动浏览器

html - 从父文件夹打开文件

带有文件而不是用户输入的 C++ cin

ruby-on-rails - 处理 "composed classes"

android - 传感器的方向类型

c# - 将 SQLite 数据库直接添加到 Zip 文件