我正在尝试使用ZipInputStream
阅读Zip档案。我循环遍历所有条目,没有任何问题,如下:
try {
while((ze = zis.getNextEntry()) != null) {
Log.v(this.toString(), "Name = " + name);
}
} catch (IOException e) {
// TODO Auto-generated catch block
//e.printStackTrace();
Log.e(this.toString(), "IOException in creating ZipEntry.");
}
当我尝试使用zis
变量在另一个函数中读取相同的zip文件时,以与上述相同的方式,行ze = zis.getNextEntry()
返回null
。这是可以理解的,因为已经到达了流的末尾。
我的问题:
1.如何“回放”流?
2.是否有替代创建临时ZipInputStream
并在下一个需要再次读取zip文件的函数中使用它?
答案 0 :(得分:1)
无法在Java中回放ZipInputStream
。
唯一的选择是重新构建代码,只需要读取一次流。这很可能对您有利(取决于您的情况),因为它不需要多次解压缩数据。
也许您可以将数据解压缩到临时缓存目录。