Wie wollen Sie Rohr ein Eingabestrom in eine komprimierte Datei, wie sie mit Java lesen wird?

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

  •  02-07-2019
  •  | 
  •  

Frage

Ich bin zu wollen ein Programm auszuführen, und wie es in lesen läuft es Ausgang und die Pfeife aus der Ausgabe in eine ZIP-Datei. Die Ausgabe des Programms kann sehr groß sein, so die Idee, in Erinnerung zu viel nicht zu halten ist -. Nur an die zip zu senden, wie ich es bekommen

War es hilfreich?

Lösung

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

Mit anderen Worten:

  1. Sie erstellen eine ZipOutputStream, die Datei geben Sie schreiben wollen.
  2. Sie erstellen eine ZipEntry, die eine Datei innerhalb dieser ZIP-Datei darstellt. das heißt, wenn Sie myFile.zip öffnen, und es gibt drei Dateien dort, jede Datei ist eine ZipEntry.

  3. Sie setzen, dass ZipEntry in Ihre ZipOutputStream

  4. Erstellen Sie eine Bytepuffer Ihre Daten in.
  5. lesen
  6. Lesen Sie von Ihrem input in die Byte-Puffer, und erinnere mich an den Grafen.
  7. Während die Zählung nicht -1 ist, schreiben Sie, dass Byte byffer auf Ihre zipStream.
  8. Lesen Sie die nächste Zeile.

Ihre Streams schließen, wenn Sie fertig sind. Wickeln Sie es in einem Verfahren, wie Sie sehen, passen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top