Crear archivo ZIP con java




import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.zip.GZIPOutputStream;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;


public class Comprimir {

public enum Extension {
ZIP (".zip"),
GZ (".gz"),
RAR (".rar");


private final String value;


Extension(String value) {
this.value = value;
}
public String getValue() {return value;}
}


// Crea un zip desde un archivo.
public static void crearZip(String origen, String destino,Extension extension) throws IOException {
FileInputStream in = new FileInputStream(origen);
GZIPOutputStream out =
new GZIPOutputStream(new FileOutputStream(destino+extension.getValue()));
byte[] buffer = new byte[4096];
int bytesRead;
while ((bytesRead = in.read(buffer)) != -1)
out.write(buffer, 0, bytesRead);
in.close();
out.close();
}



// Crea un zip desde un directorio.
public static void zipDirectorio(String dir, String destino,Extension extension)
throws IOException, IllegalArgumentException {
// Revisa que el directorio sea direcorio y lee sus archivos.
File d = new File(dir);
if (!d.isDirectory())
throw new IllegalArgumentException(dir + " no es un directorio." );
String[] entries = d.list();
byte[] buffer = new byte[4096]; // Crea un buffer para copiar
int bytesRead;
ZipOutputStream out = new ZipOutputStream(new
FileOutputStream(destino+extension.getValue()));
for (int i = 0; i < entries.length; i++) {
File f = new File(d, entries[i]);
if (f.isDirectory())
continue//Ignora el directorio
FileInputStream in = new FileInputStream(f);

ZipEntry entry = new ZipEntry(f.getPath()); //Crea una entrada zip para cada archivo,
out.putNextEntry(entry);

while ((bytesRead = in.read(buffer)) != -1)
out.write(buffer, 0, bytesRead);
in.close();
}
out.close();
}
}

Comentarios

  1. Al crear el rar los archivos internos se crean dentro de todo el directorio como hacer para que se cree solo con una carpeta en el metodo crear desde directorio

    ResponderEliminar

Publicar un comentario