Home / Programmazione / Java / Creare file ZIP in Java
Mattepuffo

Creare file ZIP in Java

Creare file ZIP in Java

Oggi vediamo come creare file ZIP in Java.

L'articolo è valido anche per Android, in quanto l'ho testato e usato principalmente in quell'ambiente.

Questo quello che avviene; data una lista di files, crea un file compresso con tutti i files impostati.

            try {
                String[] files = {"file_1.xls", "file_2.txt", "file_3,jpeg"};
                Compress c = new Compress(files, "file.zip");
                c.zip();
            } catch (IOException e) {
            }

La lista di file gliela passiamo come array di String.

Questa la classe Compress:

public class Compress {

    private static int BUFFER = 2048;
    private String[] files;
    private String zipFile;

    public Compress(String[] files, String zipFile) {
        this.files = files;
        this.zipFile = zipFile;
    }

    public void zip() throws IOException {
        BufferedInputStream origin = null;
        FileOutputStream dest = new FileOutputStream(zipFile);
        ZipOutputStream out = new ZipOutputStream(new BufferedOutputStream(dest));
        byte data[] = new byte[BUFFER];
        System.out.println(zipFile);
        for (int i = 0; i < files.length; i++) {
            FileInputStream fi = new FileInputStream(files[i]);
            origin = new BufferedInputStream(fi, BUFFER);
            ZipEntry entry = new ZipEntry(files[i].substring(files[i].lastIndexOf("/") + 1));
            out.putNextEntry(entry);
            int count;
            while ((count = origin.read(data, 0, BUFFER)) != -1) {
                out.write(data, 0, count);
            }
            origin.close();
        }
        out.close();
    }

}

Al costruttore passiamo la lista di files e dove salvare il file ZIP di output.

ZipOutputStream è un output stream specifico per i file ZIP.

Iteriamo sulla lista, e aggiungiamo ogni voce allo stream usando ZipEntry.

Usando questa classe possiamo passare du uno a più files!

Enjoy!