質問よろしいでしょうか。
Android 開発を行ってますが、Android には関係ないと思うのでここで質問させて頂きたいです。

画像ファイルが複数入っている zip ファイルから、
指定のファイル(ファイル名で指定)のみを取り出して表示させようと思ってます。

FileInputStream fis = new FileInputStream(〜);
ZipInputStream zis = new ZipInputStream(fis);
for (ZipEntry ze = zis.getNextEntry(); ze != null; ze = zis.getNextEntry()) {
 // もし指定のファイルなら表示して break
}

これで動作はするのですが、zip ファイルには3万を超えるファイルが入っており、
たまたま後ろの方にあるファイルを指定した場合、非常に時間がかかってしまいました。

そこで、C言語で言う ftell および fseek を使えば、
起動時に ftell でファイル名⇔ファイル位置のハッシュを作っておき(時間がかかりますが起動時に1回だけなので許容範囲としてます)、
表示時は fseek で一発で取り出せるのでは?と考えました。

ただ、ZipInputStream に fseek の代わりになりそうな skip というメソッドは見つかったのですが、
現在のポインタ位置を取得する ftell に当たるメソッドが見つかりません。

RandomAccessFile というクラスも見つけましたが、zip に使う方法が分からず…。

何かいい方法はないでしょうか。
長文で申し訳ありませんが、よろしくお願いします。