import java.io.*;
import java.util.*;
import java.util.zip.*;

public class ZipTest {

    public static void main(String[] args) throws IOException {
        File[] files = new File(".").listFiles(new FileFilter() {
            public boolean accept(File file) {
                return file.toString().endsWith(".html");
            }
        });

        zipFiles(files);
        unzipFiles("backup/");
    }

    private static void zipFiles(File[] files) throws IOException {
        ZipOutputStream zip = new ZipOutputStream(
                              new BufferedOutputStream(
                              new FileOutputStream("html.zip")));

        for (int i = 0; i < files.length; i++) {
            InputStream in = new BufferedInputStream(
                             new FileInputStream(files[i]));
            ZipEntry entry = new ZipEntry(files[i].getName());
    
            zip.putNextEntry(entry);
            int b;
            while ((b = in.read()) != -1) {
                zip.write(b);
            }
            zip.closeEntry();
            in.close();
        }
        zip.close();
    }

    private static void unzipFiles(String dir) throws IOException {
        ZipFile zipFile = new ZipFile("html.zip");

        Enumeration entries = zipFile.entries();
        while (entries.hasMoreElements()) {
            ZipEntry entry = (ZipEntry) entries.nextElement();

            InputStream  in  = new BufferedInputStream(
                               zipFile.getInputStream(entry));
            OutputStream out = new BufferedOutputStream(
                               new FileOutputStream(dir + entry.getName()));
            int b;
            while ((b = in.read()) != -1) {
                out.write(b);
            }
            in.close();
            out.close();
        }
    }

}

