La compresión de objetos es el proceso de reducir el tamaño del objeto con la ayuda de varias clases y métodos. Luego, el receptor recupera la información completa descomprimiendo el objeto que está comprimido por el remitente. Eche un vistazo a la figura a continuación para distinguir el tamaño del archivo antes de comprimirlo y el tamaño del archivo después de comprimirlo:
Necesidad de compresión de objetos
La compresión de objetos Java es muy útil en el caso de que necesitemos transferir grandes cantidades de objetos a través de una red. La compresión de objetos se realiza en el lado del remitente y se descomprime en el otro extremo, es decir, en el lado del receptor. Por esto, podemos mejorar el rendimiento y podemos enviar y recibir los objetos en gran cantidad entre dos extremos.
Cómo se realiza la compresión de objetos en Java
La compresión de objetos Java se realiza mediante la clase GZIPOutputStream (esta clase implementa un filtro de flujo para escribir datos comprimidos en el formato de archivo GZIP) y lo pasa a la clase ObjectOutputStream (esta clase amplía OutputStream e implementa ObjectOutput , ObjectStreamConstants ) para escribir el objeto en un archivo externo.
Necesitamos extender la clase Serializable porque el objeto que vamos a comprimir estará representado por el objeto Usuario. Es por eso que necesitamos hacer que el objeto Usuario sea serializable.
Implementación de Compresión de Objetos en Java
Java
// Java Program to demonstrate // Object Compression import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.ObjectOutputStream; import java.io.Serializable; import java.util.zip.GZIPOutputStream; import java.io.File; public class GFG { public static void main(String args[]) { // Creating objects of Java Class Bill Bill b1 = new Bill("176BU", "Abhishek Gupta"); Bill b2 = new Bill("176DA", "Sushant Singh"); FileOutputStream f = null; // Creates a GZIPOutputStream and // initialize it with null GZIPOutputStream g = null; // Creates an ObjectOutputStream and // initialise it with null // ObjectOutputStream writes to the // defined GZIPOutputStream. ObjectOutputStream o = null; // Write path of the file in the argument File newFile = new File("File.dat"); try { // Pass the File object // (newFile) to the // FileOutputStream f = new FileOutputStream(newFile); g = new GZIPOutputStream(f); // Now pass the GZIPOutputStream object // to the ObjectOutputStream o = new ObjectOutputStream(g); // Writes the object that are going // to be compressed to the // ObjectOutputStream using // writeObject(objectName) o.writeObject(b1); o.writeObject(b2); // flush() API methods of // ObjectOutputStream. o.flush(); System.out.println( "Process done.."); System.out.println( "Objects are compressed"); } catch ( FileNotFoundException e) { // Catch Block System.out.println( e.message()); } catch (IOException e) { // Catch Block System.out.println( e.message()); } finally { try { // Using their // close() API methods, // closes both // the GZIPOutputStream // and the // ObjectOutputStream if (o != null) o.close(); if (g != null) g.close(); } catch (Exception ex) { // Catch block System.out.println( ex.message()); } } } } class Bill implements Serializable { // Declaring the private variables private String billno; private String buyerName; // Creating constructor // of Java Class Bill public Bill( String bill, String buyer) { this.billno = bill; this.buyerName = buyer; } // Defining methods initializing // variables billno and buyerName public String getBill() { return billno; } public void setBill( String billno) { this.billno = billno; } public String getBuyerName() { return buyerName; } public void setBuyerName( String buyer) { this.buyerName = buyer; } }
Producción:
Process done.. Objects are compressed.
Antes de la compresión de objetos: Después de la compresión de objetos: El tamaño del archivo puede comprimirse hasta un 70 % de su tamaño inicial.
Ventajas
- Se puede transferir una gran cantidad de objetos a través de una red sin ningún problema de rendimiento.
- No se pierden datos durante el proceso de compresión-descompresión.
Desventaja
- Puede llevar tiempo comprimir y descomprimir si el tamaño del archivo es muy grande.
Publicación traducida automáticamente
Artículo escrito por master_abhig y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA