我正在开发一个项目(使用 Android Studio 3.1.4),该项目读取存储为 .zip 文件的神经网络,以便在 Android 中进一步与 DL4J 一起使用。
我正在尝试打开位于我的项目 res\raw 目录中的这个 .zip 文件。为此,我尝试使用 java.util.zip 中的 ZipFile() 方法。
问题:
以下代码引发异常:
File model_file = new File(String.valueOf(this.getResources().openRawResource(R.raw.neuralnet)));
ZipFile zipFile = new ZipFile(model_file);
例外:
“java.util.zip.ZipException:文件太短而不能成为 zip 文件:0”
因此我无法加载模型。在运行 Android API 24 的模拟设备上进行测试
在 API 26 上,例外情况有所不同:
java.io.FileNotFoundException:文件不存在:android.content.res.AssetManager$AssetInputStream@ddde727
有人有使用 ZipFile() 或在 Android 中使用 DL4J 加载神经网络模型的经验吗?
build.gradle 中是否需要一些特殊的东西?
任何输入表示赞赏!
我试过的:
- 检查 .zip 文件确保它存在。
- 确保 .zip 只是一个容器,并且文件没有被压缩,方法是使用 7Zip 将包含 3 个文件存档,而不压缩为 .zip
- 检查了 READ_EXTERNAL_STORAGE 权限,即使我认为它不应该是必需的
- 尝试使用完整路径而不是使用 this.getResources().openRawResource(R.raw.neuralnet)
Android 权限:我正在运行 android api > 23,并且我在运行时请求 READ_EXTERNAL_STORAGE 权限。
清单包括:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
谢谢,
莫