Comment diriger un flux d'entrée vers un fichier compressé lors de la lecture avec Java?

StackOverflow https://stackoverflow.com/questions/137645

  •  02-07-2019
  •  | 
  •  

Question

Je souhaite exécuter un programme. Lorsqu’il est exécuté, sa sortie est lue et dirigée vers un fichier compressé. Le résultat du programme peut être assez volumineux, l’idée est donc de ne pas conserver trop de mémoire, mais de l’envoyer au zip tel que je l’ai compris.

Était-ce utile?

La solution

ZipOutputStream targetStream = new ZipOutputStream(fileToSaveTo);
ZipEntry entry = new ZipEntry(nameOfFileInZipFile);
targetStream.putNextEntry(entry);

byte[] dataBlock = new byte[1024];
int count = inputStream.read(dataBlock, 0, 1024);
while (count != -1) {
    targetStream.write(dataBlock, 0, count);
    count = inputStream.read(dataBlock, 0, 1024);
}

En d'autres termes:

  1. Vous créez un flux ZipOutputStream en lui donnant le fichier sur lequel vous souhaitez écrire.
  2. Vous créez un ZipEntry, qui constitue un fichier au sein de ce fichier zip. C'est-à-dire que lorsque vous ouvrez myFile.zip et qu'il y a 3 fichiers, chaque fichier est un fichier ZipEntry.

  3. Vous insérez cette entrée zip dans votre flux ZipOutputStream

  4. Créez un tampon d'octets dans lequel lire vos données.
  5. Lisez votre inputStream dans votre tampon d'octets et rappelez-vous le nombre.
  6. Tant que le nombre n'est pas égal à -1, écrivez cet octet sur votre zipStream.
  7. Lire la ligne suivante.

Fermez vos flux lorsque vous avez terminé. Enveloppez-le dans une méthode comme bon vous semble.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top