è possibile ottenere un flusso di input di zipentry da un flusso di zipinput?

2022-07-29 10:00:34

Sto ricevendo uno ZipInputStream da un'altra fonte e devo fornire InputStream della prima voce a un'altra fonte.

Spero di poterlo fare senza salvare un file temporaneo su un dispositivo, tuttavia l'unico modo che conosco per ottenere un InputStream per una singola voce è tramite ZipFile.getInputStream(entry) e poiché ho un ZipInputStream e non uno ZipFile, questo non è possibile.

Quindi la soluzione migliore che ho è

  1. salva InputStream in un file
  2. leggi il file come ZipFile
  3. usa InputStream della prima voce
  4. elimina il file temporaneo.

- pstanton

Source
Risposta


31
  • figurato:

    è del tutto possibile, la chiamata a ZipInputStream.getNextEntry() posiziona il InputStream all'inizio della voce e quindi fornendo il }^{ equivale a fornire un ZipInputStream di ZipEntry.

    il InputStream è abbastanza intelligente da gestire l'EOF della voce a valle, o almeno così sembra.

    pag.