Estoy queriendo ejecutar un programa y mientras se ejecuta lea en su salida y extraiga la salida en un archivo comprimido. El resultado del programa puede ser bastante grande, por lo que la idea es no guardar demasiado en la memoria, solo para enviarlo al archivo zip cuando lo obtenga.¿Cómo canaliza un flujo de entrada a un archivo comprimido cuando se lee con Java?
7
A
Respuesta
8
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 otras palabras:
- Se crea un ZipOutputStream, dándole el archivo que desea escribir.
Crea un ZipEntry, que constituye un archivo dentro de ese archivo zip. es decir, cuando abre myFile.zip y hay 3 archivos allí, cada archivo es ZipEntry.
pones eso en su ZipEntry ZipOutputStream
- Crear una memoria intermedia de bytes a leer los datos.
- Lea desde su inputStream en su búfer de bytes, y recuerde el conteo.
- Si bien el recuento no es -1, escriba ese byte byte en su zipStream.
- Lea la siguiente línea.
Cierre las transmisiones cuando haya terminado. Envuélvalo en un método como mejor le parezca.
Cuestiones relacionadas
- 1. ¿Cómo se lee continuamente un archivo en Java?
- 2. ¿Cómo se lee un InputStream con UTF-8?
- 3. Crear un archivo comprimido cifrado con PHP
- 4. ¿Cómo se lee CDATA en un archivo XML con PowerShell?
- 5. Python: UnicodeEncodeError cuando se lee de la entrada estándar
- 6. ¿Cómo se lee un archivo en un mapa de bits de Java?
- 7. ¿Cómo puedo ver un archivo comprimido contenido
- 8. Bash - Cómo pasar argumentos a un script que se lee a través de la entrada estándar
- 9. Cómo creo un flujo de entrada desde un ZipEntry
- 10. Bash: caracteres especiales se perdieron cuando se lee el archivo
- 11. Actualización de un único archivo en un archivo comprimido tar
- 12. Convierta una cadena a flujo de entrada XML en java
- 13. ¿Cómo se lee una imagen en Java cuando Toolkit.getDefaultToolkit() arroja un AWTError?
- 14. ¿Cómo se lee una clave cifrada con contraseña con java?
- 15. Ruby: Crear un archivo comprimido Gzipped
- 16. ¿Cómo saber si un archivo está comprimido gzip?
- 17. ¿Cómo se lee un archivo con datos de prueba con Clojure?
- 18. ¿Cómo escribir un flujo en un archivo?
- 19. ¿Cómo se lee un archivo que está en uso?
- 20. ¿Lee un archivo al revés?
- 21. Cómo comprimir un directorio en un archivo comprimido programáticamente
- 22. Proceso de Java con flujo de entrada/salida
- 23. java impresión flujo de entrada a la consola el contenido
- 24. Common Lisp: ¿Por qué se transfieren símbolos al paquete incorrecto cuando se lee desde un archivo?
- 25. ¿Cómo se lee un archivo (por ejemplo, un archivo txt) de otro paquete java sin especificar la ruta absoluta?
- 26. Java - leyendo desde un archivo. Flujo de entrada frente al lector
- 27. py3k: ¿Cómo se lee un archivo dentro de un archivo zip como texto, no como bytes?
- 28. Cómo puedo obtener un flujo de entrada del objeto HSSFWorkbook
- 29. usando sed en un archivo comprimido
- 30. ¿Cómo puedo comprimir/descomprimir un archivo de forma transparente a medida que un programa escribe/lee de él?