Android Zip Unzip File zip(String[] files, String destZipFilePath)

Here you can find the source of zip(String[] files, String destZipFilePath)

Description

Compresses files represented in an array of paths

Parameter

Parameter Description
files a String array containing file paths
destZipFilePath The path of the destination zip file

Exception

Parameter Description
FileNotFoundException an exception
IOException an exception

Declaration

public static void zip(String[] files, String destZipFilePath)
        throws FileNotFoundException, IOException 

Method Source Code

//package com.java2s;
import java.io.BufferedInputStream;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;

import java.util.ArrayList;
import java.util.List;
import java.util.zip.ZipEntry;

import java.util.zip.ZipOutputStream;

public class Main {
    /**/*  w w w .ja v a  2  s. com*/
     * Size of the buffer to read/write data
     */
    private static final int BUFFER_SIZE = 4096;

    /**
     * Compresses a list of files to a destination zip file
     * 
     * @param listFiles
     *            A collection of files and directories
     * @param destZipFilePath
     *            The path of the destination zip file
     * @throws FileNotFoundException
     * @throws IOException
     */
    public static void zip(List<File> listFiles, String destZipFilePath)
            throws FileNotFoundException, IOException {
        ZipOutputStream zos = null;
        try {
            zos = new ZipOutputStream(new FileOutputStream(destZipFilePath));
            for (File file : listFiles) {
                if (file.isDirectory()) {
                    zipDirectory(file, file.getName(), zos);
                } else {
                    zipFile(file, zos);
                }
            }
        } finally {
            zos.flush();
            zos.close();
        }
    }

    /**
     * Compresses files represented in an array of paths
     * 
     * @param files
     *            a String array containing file paths
     * @param destZipFilePath
     *            The path of the destination zip file
     * @throws FileNotFoundException
     * @throws IOException
     */
    public static void zip(String[] files, String destZipFilePath)
            throws FileNotFoundException, IOException {
        List<File> listFiles = new ArrayList<File>();
        for (int i = 0; i < files.length; i++) {
            listFiles.add(new File(files[i]));
        }
        zip(listFiles, destZipFilePath);
    }

    /**
     * Adds a directory to the current zip output stream
     * 
     * @param folder
     *            the directory to be added
     * @param parentFolder
     *            the path of parent directory
     * @param zos
     *            the current zip output stream
     * @throws FileNotFoundException
     * @throws IOException
     */
    private static void zipDirectory(File folder, String parentFolder,
            ZipOutputStream zos) throws FileNotFoundException, IOException {
        for (File file : folder.listFiles()) {
            if (file.isDirectory()) {
                zipDirectory(file, parentFolder + "/" + file.getName(), zos);
                continue;
            }
            zos.putNextEntry(new ZipEntry(parentFolder + "/"
                    + file.getName()));
            BufferedInputStream bis = null;
            try {
                bis = new BufferedInputStream(new FileInputStream(file));
                long bytesRead = 0;
                byte[] bytesIn = new byte[BUFFER_SIZE];
                int read = 0;
                while ((read = bis.read(bytesIn)) != -1) {
                    zos.write(bytesIn, 0, read);
                    bytesRead += read;
                }
                zos.closeEntry();
            } finally {
                bis.close();
            }
        }
    }

    /**
     * Adds a file to the current zip output stream
     * 
     * @param file
     *            the file to be added
     * @param zos
     *            the current zip output stream
     * @throws FileNotFoundException
     * @throws IOException
     */
    private static void zipFile(File file, ZipOutputStream zos)
            throws FileNotFoundException, IOException {
        zos.putNextEntry(new ZipEntry(file.getName()));
        BufferedInputStream bis = null;
        try {
            bis = new BufferedInputStream(new FileInputStream(file));
            long bytesRead = 0;
            byte[] bytesIn = new byte[BUFFER_SIZE];
            int read = 0;
            while ((read = bis.read(bytesIn)) != -1) {
                zos.write(bytesIn, 0, read);
                bytesRead += read;
            }
            zos.closeEntry();
        } finally {
            bis.close();
        }
    }
}

Related

  1. unJarDirectory(final String in, final File fOut)
  2. unzip(File pZipFile)
  3. unzip(String sourceFileName, String destPath)
  4. zip(String filePath, String zipPath)
  5. zip(String sourceDir, String zipFile)
  6. zip(String[] files, String zipFile)
  7. zip(String[] files, String zipFile)
  8. zip(String[] files, String zipFile)
  9. zip(String[] files, String zipFile)