Android Zip Unzip Directory zipFileAtPath(String[] sourcePaths, String toLocation)

Here you can find the source of zipFileAtPath(String[] sourcePaths, String toLocation)

Description

zip File At Path

Declaration

public static boolean zipFileAtPath(String[] sourcePaths,
            String toLocation) 

Method Source Code

//package com.java2s;
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;
import android.util.Log;

public class Main {
    private static final int BUFFER_SIZE = 2048;

    public static boolean zipFileAtPath(String[] sourcePaths,
            String toLocation) {//from  w  w w .j a  v a 2 s.  c  o  m
        // ArrayList<String> contentList = new ArrayList<String>();

        try {
            BufferedInputStream origin = null;
            FileOutputStream dest = new FileOutputStream(toLocation);
            ZipOutputStream out = new ZipOutputStream(
                    new BufferedOutputStream(dest));
            for (String sourcePath : sourcePaths) {
                File sourceFile = new File(sourcePath);
                if (sourceFile.isDirectory()) {
                    zipSubFolder(out, sourceFile, sourceFile.getParent()
                            .length());
                } else {
                    byte data[] = new byte[BUFFER_SIZE];
                    FileInputStream fi = new FileInputStream(sourcePath);
                    origin = new BufferedInputStream(fi, BUFFER_SIZE);
                    ZipEntry entry = new ZipEntry(
                            getLastPathComponent(sourcePath));
                    out.putNextEntry(entry);
                    int count;
                    while ((count = origin.read(data, 0, BUFFER_SIZE)) != -1) {
                        out.write(data, 0, count);
                    }
                }
            }
            out.close();
        } catch (Exception e) {
            e.printStackTrace();
            return false;
        }

        return true;
    }

    private static void zipSubFolder(ZipOutputStream out, File folder,
            int basePathLength) throws IOException {

        File[] fileList = folder.listFiles();
        BufferedInputStream origin = null;
        for (File file : fileList) {
            if (file.isDirectory()) {
                zipSubFolder(out, file, basePathLength);
            } else {
                byte data[] = new byte[BUFFER_SIZE];
                String unmodifiedFilePath = file.getPath();
                String relativePath = unmodifiedFilePath.substring(
                        basePathLength).replace("\\", "");
                Log.i("ZIP SUBFOLDER", "Relative Path : " + relativePath);
                FileInputStream fi = new FileInputStream(unmodifiedFilePath);
                origin = new BufferedInputStream(fi, BUFFER_SIZE);
                ZipEntry entry = new ZipEntry(relativePath);
                out.putNextEntry(entry);
                int count;
                while ((count = origin.read(data, 0, BUFFER_SIZE)) != -1) {
                    out.write(data, 0, count);
                }
                origin.close();
            }
        }
    }

    public static String getLastPathComponent(String filePath) {
        String[] segments = filePath.split("/");
        String lastPathComponent = segments[segments.length - 1];
        return lastPathComponent;
    }
}

Related

  1. zipSubFolder(ZipOutputStream out, File folder, int basePathLength)
  2. zipSubFolder(ZipOutputStream out, File folder, int basePathLength)
  3. zipSubFolder(ZipOutputStream out, File folder, int basePathLength)
  4. zipSubFolder(ZipOutputStream out, File folder, int basePathLength)
  5. zipSubFolder(final ZipOutputStream out, final File folder, final int basePathLength)
  6. zipFileAtPath(String[] sourcePaths, String toLocation)
  7. zipFileAtPath(final String sourcePath, final String toLocation)
  8. zipDirectory(File directory, File zip)
  9. zipDirectory(File directory, File zip)