重绕ZipInputStream - Android

时间:2013-07-25 13:24:27

标签: android zipinputstream

我正在尝试使用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文件的函数中使用它?

1 个答案:

答案 0 :(得分:1)

无法在Java中回放ZipInputStream

唯一的选择是重新构建代码,只需要读取一次流。这很可能对您有利(取决于您的情况),因为它不需要多次解压缩数据。

也许您可以将数据解压缩到临时缓存目录。