2010-09-20 9 views
8

Cómo comprimir y descomprimir un archivo en android usando GZip. por favor proporcione alguna referencia, para que sea de gran ayuda para mí.GZip en android

Gracias de antemano

+0

mira en este enlace http://stackoverflow.com/q/6717165/779408. Aquí se representa un método de compresión y descompresión. – breceivemail

Respuesta

3

Echa un vistazo a GZIPInputStream y GZIPOutputStream.

+2

Proporcione algunos ejemplos en tiempo real ... –

+3

¿Necesita ejemplos de cómo usar las secuencias? –

+0

Gracias por sus excelentes amigos de respuesta, encontré la solución para mi propia publicación. –

2

Me encontré con el mismo problema hace algún tiempo. Aquí están las funciones que utilizan

Comprimir Función

if (responseCode == HttpConnection.HTTP_OK){

boolean stop = false, pause = false; 
totalSize = conn.getLength() + downloaded; 
chunkSize = (int)(conn.getLength()/100); 
System.out.println("*********-----" + conn.getLength() + ""); 
System.out.println("-----------------ok"); 
in = conn.openInputStream(); 
int length = 0, s = 0; 
byte[] readBlock = new byte[(int)conn.getLength()]; 


while ((s = in.read(readBlock) != -1) 
     length = length + s; 
{ 
     if (!pause) 
     { 
      readBlock = Decompress.decompress(readBlock); 
      out.write(readBlock, 0, length); 
      downloaded += length; 
      int a = getPerComplete(totalSize, downloaded); 
      System.out.println("% OF Downloaded--------" + a); 
      int a1 = getPerComplete(totalSize, downloaded); 

función Descomprimir: -

public byte[] decompress(byte[] compressed) throws IOException 
{ 
    GZIPInputStream gzipInputStream; 
    if (compressed.length > 4) 
    { 
     gzipInputStream = new GZIPInputStream(
      new ByteArrayInputStream(compressed, 4, 
            compressed.length - 4)); 

     ByteArrayOutputStream baos = new ByteArrayOutputStream(); 
     for (int value = 0; value != -1;) 
     { 
      value = gzipInputStream.read(); 
      if (value != -1) 
      { 
       baos.write(value); 
      } 
     } 
     gzipInputStream.close(); 
     baos.close(); 

     return baos.toByteArray(); 
    } 
    else 
    { 
     return null; 
    } 
} 

}

13

Utilice los siguientes métodos para comprimir la cadena usando gzip.

public static byte[] compress(String string) throws IOException { 
    ByteArrayOutputStream os = new ByteArrayOutputStream(string.length()); 
    GZIPOutputStream gos = new GZIPOutputStream(os); 
    gos.write(string.getBytes()); 
    gos.close(); 
    byte[] compressed = os.toByteArray(); 
    os.close(); 
    return compressed; 
} 

public static String decompress(byte[] compressed) throws IOException { 
    final int BUFFER_SIZE = 32; 
    ByteArrayInputStream is = new ByteArrayInputStream(compressed); 
    GZIPInputStream gis = new GZIPInputStream(is, BUFFER_SIZE); 
    StringBuilder string = new StringBuilder(); 
    byte[] data = new byte[BUFFER_SIZE]; 
    int bytesRead; 
    while ((bytesRead = gis.read(data)) != -1) { 
     string.append(new String(data, 0, bytesRead)); 
    } 
    gis.close(); 
    is.close(); 
    return string.toString(); 
}