Android Zip File Create createZip(String[] files, String zipFile)

Here you can find the source of createZip(String[] files, String zipFile)

Description

create Zip

License

Open Source License

Declaration

public static void createZip(String[] files, String zipFile) 

Method Source Code

//package com.java2s;
//License from project: Open Source License 

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;

import java.util.zip.ZipEntry;

import java.util.zip.ZipOutputStream;

public class Main {
    private static final int BUFFER = 8192;

    public static void createZip(String[] files, String zipFile) {
        try {//w ww  .j ava2  s.co m
            FileOutputStream dest = new FileOutputStream(zipFile);
            ZipOutputStream out = new ZipOutputStream(
                    new BufferedOutputStream(dest));

            for (String s : files) {
                File file = new File(s);

                if (file.isDirectory()) {
                    zipSubFolder(out, file, file.getParent().length());
                } else {
                    zipFile(out, file);
                }
            }

            out.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    private static void zipSubFolder(ZipOutputStream out, File folder,
            int basePathLength) throws IOException {
        File[] fileList = folder.listFiles();

        for (File file : fileList) {
            if (file.isDirectory()) {
                zipSubFolder(out, file, basePathLength);
            } else {
                BufferedInputStream origin;
                byte data[] = new byte[BUFFER];
                String unmodifiedFilePath = file.getPath();
                String relativePath = unmodifiedFilePath
                        .substring(basePathLength);

                FileInputStream fi = new FileInputStream(unmodifiedFilePath);
                origin = new BufferedInputStream(fi, BUFFER);
                ZipEntry entry = new ZipEntry(relativePath);
                out.putNextEntry(entry);
                int count;
                while ((count = origin.read(data, 0, BUFFER)) != -1) {
                    out.write(data, 0, count);
                }
                origin.close();
            }
        }
    }

    private static void zipFile(ZipOutputStream out, File file)
            throws IOException {
        BufferedInputStream origin;
        byte data[] = new byte[BUFFER];
        String str = file.getPath();

        FileInputStream fi = new FileInputStream(str);
        origin = new BufferedInputStream(fi, BUFFER);
        ZipEntry entry = new ZipEntry(
                str.substring(str.lastIndexOf("/") + 1));
        out.putNextEntry(entry);
        int count;
        while ((count = origin.read(data, 0, BUFFER)) != -1) {
            out.write(data, 0, count);
        }
        origin.close();
    }
}

Related

  1. zipFile(Collection resFileLIst, File zipFile)
  2. zipFile(Collection resFileLIst, File zipFile, String comment)
  3. zipIt(File zipFile, ArrayList files, Context context)
  4. ZipFiles(File zip, File... srcFiles)
  5. createZip(String[] files, String zipFile)
  6. compress(File file)
  7. compress(File file)
  8. compress(File file, boolean delete)
  9. compress(File file, boolean delete)