Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/188.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android:ZipFile()java.util.zip.ZipException:文件太短,无法成为zip文件:0_Java_Android_Keras_Zip_Dl4j - Fatal编程技术网

Android:ZipFile()java.util.zip.ZipException:文件太短,无法成为zip文件:0

Android:ZipFile()java.util.zip.ZipException:文件太短,无法成为zip文件:0,java,android,keras,zip,dl4j,Java,Android,Keras,Zip,Dl4j,我正在做一个项目(使用Android Studio 3.1.4),它读取一个存储为.zip文件的神经网络,以便在Android中进一步使用DL4J 我正在尝试打开位于我的projects res\raw目录中的.zip文件。为此,我尝试使用java.util.zip中的ZipFile()方法 问题: 以下代码引发异常: File model_file = new File(String.valueOf(this.getResources().openRawResource(R.raw.neur

我正在做一个项目(使用Android Studio 3.1.4),它读取一个存储为.zip文件的神经网络,以便在Android中进一步使用DL4J

我正在尝试打开位于我的projects 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
  • 已检查读取\u外部\u存储权限,尽管我认为不需要它
  • 尝试使用完整路径,而不是使用此.getResources().openRawResource(R.raw.neuralnet)
Android权限: 我正在运行AndroidAPI>23,并在运行时请求读取外部存储权限

舱单包括:

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />

谢谢


Mo

你的问题是打开文件的方式

要打开原始文件,请查看以下链接:


我能够打开归档文件的内容,方法是使用ZipFile()方法,该方法给了我另一个错误,因为它需要的是路径,而不是资源标识符

不过,打开归档文件时,我使用了“无主体”提出的方法:

InputStream ins1 = getResources().openRawResource(getResources().getIdentifier("configuration", "raw", getPackageName()));
InputStream ins2 = getResources().openRawResource(getResources().getIdentifier("coefficients", "raw", getPackageName()));
InputStream ins3 = getResources().openRawResource(getResources().getIdentifier("updaterstate", "raw", getPackageName()));
model = restoreMultiLayerNetwork(ins1, ins2, ins3, false);