Wie wollen Sie Rohr ein Eingabestrom in eine komprimierte Datei, wie sie mit Java lesen wird?
-
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
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:
- Sie erstellen eine ZipOutputStream, die Datei geben Sie schreiben wollen.
-
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.
-
Sie setzen, dass ZipEntry in Ihre ZipOutputStream
- Erstellen Sie eine Bytepuffer Ihre Daten in. lesen
- Lesen Sie von Ihrem input in die Byte-Puffer, und erinnere mich an den Grafen.
- Während die Zählung nicht -1 ist, schreiben Sie, dass Byte byffer auf Ihre zipStream.
- 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