0

.zip で Zip アーカイブを読み込もうとしていZipInputStreamます。次のように、すべてのエントリを問題なく循環します。

  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.");
        }   

変数を使用して別の関数で同じ zip ファイルを読み取ろうとすると、zis上記と同じ方法で行ze = zis.getNextEntry()が返されますnull。ストリームの終わりに到達したため、これは理解できます。

私の質問:
1. ストリームを「巻き戻す」にはどうすればよいですか?
2.一時ファイルを作成してZipInputStream、zip ファイルを再度読み取る必要がある次の機能でそれを使用する代わりの方法はありますか?

4

1 に答える 1

1

ZipInputStreamJava でa を巻き戻す方法はありません。

唯一の代替手段は、コードを再構築して、ストリームを 1 回だけ読み取る必要があるようにすることです。これは、データを複数回解凍する必要がないため、(状況のコンテキストに応じて) 有利になる可能性が高くなります。

代わりに、データを一時キャッシュ ディレクトリに解凍することもできます。

于 2013-07-25T13:42:27.790 に答える