GZIPOutputStream
es solo una subclase de DeflaterOutputStream
pero se pueden crear instancias de ambos. ¿Cuándo uso uno sobre el otro? ¿La compresión es la misma?¿Cuál es la diferencia entre GZIPOutputStream y DeflaterOutputStream?
Respuesta
Las diferencias entre DeflaterOutputStream, ZIPOutputStream, y GZIPOutputStream reflejan la diferencia entre sus predecesores históricos de compresión:
respectivamente. Deflate se puede considerar la implementación de referencia del algoritmo de compresión, mientras que ZIP y GZIP son 'extensiones' de él. Ambos últimos respaldan el concepto de 'archivos', que es mucho más evidente en la API de Java para ZipOutputStream.
Si simplemente está tratando de comprimir un flujo de datos que recomendaría el uso de la DeflaterOutputStream, pero si va a crear un archivo que probablemente debería mirar en ZipOutputStream lugar.
DeflaterOutputStream implementa el método de compresión de desinflado sin procesar. GZIPOutputStream agrega lógica adicional requerida para GZIP: comprobación de CRC-32, el número mágico de GZIP, encabezado GZIP, tráiler, etc. Consulte la fuente para GZIPOutputStream.java y DeflaterOutputStream.java. Vea también Compressing and Decompressing Data Using Java APIs.
En el enlace de respuesta original no funciona: [Comprimir y descomprimir datos usando API de Java] (http://www.oracle.com/technetwork/articles/java/compress-1565076.html) – kant
La diferencia está en el formato de compresión específico utilizado. Desde el javadoc para DeflaterOutputStream:
public class DeflaterOutputStream
extends FilterOutputStream
This class implements an output stream filter for compressing data in the "deflate" compression format. It is also used as the basis for other types of compression filters, such as GZIPOutputStream.
public class GZIPOutputStream
extends DeflaterOutputStream
This class implements a stream filter for writing compressed data in the GZIP file format.
La corriente GZIP se extiende la aplicación desinflado con detalles adicionales específicos para el formato de archivo GZIP.
- 1. ¿Cuál es la diferencia entre " " y ""?
- 2. ¿cuál es la diferencia entre:.! y: r !?
- 3. ¿Cuál es la diferencia entre ".equals" y "=="?
- 4. Cuál es la diferencia entre = y: =
- 5. ¿Cuál es la diferencia entre [indefinido] y [,]?
- 6. ¿Cuál es la diferencia entre .ToString (+) y ""
- 7. Cuál es la diferencia entre $ (...) y `...`
- 8. ¿Cuál es la diferencia entre `##` y `hashCode`?
- 9. ¿Cuál es la diferencia entre + = y = +?
- 10. ¿Cuál es la diferencia entre dict() y {}?
- 11. Cuál es la diferencia entre $ y jQuery
- 12. ¿Cuál es la diferencia entre "$^N" y "$ +"?
- 13. ¿Cuál es la diferencia entre {0} y ""?
- 14. OpenGL (ES) - ¿Cuál es la diferencia entre frustum y orto?
- 15. ¿Cuál es la diferencia entre la abstracción y la encapsulación?
- 16. Cuál es la diferencia entre la función() {}() y la función() {}()
- 17. ¿Cuál es la diferencia entre @ y $ y% en MSBuild?
- 18. ¿Cuál es la diferencia entre la vinculación estática y dinámica?
- 19. ¿Cuál es la diferencia entre la carpeta vim72 y vimfiles?
- 20. ¿cuál es la diferencia entre el complemento y la biblioteca?
- 21. ¿Cuál es la diferencia entre CookieContainer y la colección Response.Cookies?
- 22. ¿Cuál es la diferencia entre la tubería y el zócalo?
- 23. ¿Cuál es la diferencia entre la relación Composición y Asociación?
- 24. ¿Cuál es la diferencia entre la sección .got y .got.plt?
- 25. ¿cuál es la diferencia entre el material y la textura?
- 26. ¿Cuál es la diferencia entre WPF y la aplicación Silverlight?
- 27. ¿Cuál es la diferencia entre el casting y la conversión?
- 28. ¿Cuál es la diferencia entre uno mismo y la ventana?
- 29. ¿cuál es la diferencia entre la lex y yacc
- 30. ¿Cuál es la diferencia entre el marco y la arquitectura?
Además de las respuestas, GZIP es interesante ya que la salida será compatible con muchas herramientas sin tener que saltar aros, como zcat, zgrep y herramientas que pueden abrir archivos gz. – Hay