miércoles, 4 de marzo de 2009

Comprimiendo con Gzip

El formato Gzip es una alternativa al famoso Zip de Windows, es bastante potente y muy usados en las comunicaciones http, para evitar el derroche del acho de banda, la gran mayoría de los navegadores (Creo que todos) soportan este formato, espero que les sea útil esta clase.


import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.zip.*;


public class TratamientoGZipFiles
{
public void Comprimir(String inFile,String outFile)
{
try {
GZIPOutputStream gzip = new GZIPOutputStream(new BufferedOutputStream(new FileOutputStream(outFile)));
BufferedInputStream bis = new BufferedInputStream(new FileInputStream(inFile),1024);
byte[] data = new byte[1024];
int counter = 0;
while((counter = bis.read(data,0,1024)) != -1)
gzip.write(data,0,counter);
bis.close();
gzip.finish();
gzip.close();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

}

public void Descomprimir(String inFile,String outFile)
{
try {
File f = new File(outFile);
f.mkdir();
f = new File(inFile);
outFile+= "/"+f.getName().substring(0,f.getName().indexOf("."));
GZIPInputStream gzip = new GZIPInputStream(new BufferedInputStream(new FileInputStream(inFile)));
BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(outFile));
byte[] data = new byte[1024];
int counter = 0;
while((counter = gzip.read(data, 0, 1024)) != -1)
bos.write(data, 0, counter);
gzip.close();
bos.flush();
bos.close();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}

}

No hay comentarios:

Publicar un comentario