Android Zip Unzip File zipFileAtPath(File sourceFile, String toLocation)

Here you can find the source of zipFileAtPath(File sourceFile, String toLocation)

Description

zip File At Path

Declaration

public static boolean zipFileAtPath(File sourceFile, 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;

public class Main {
    public static boolean zipFileAtPath(File sourceFile, String toLocation) {
        // ArrayList<String> contentList = new ArrayList<String>();
        final int BUFFER = 2048;

        try {/*from   ww  w .  j a v a2s .  c  o m*/
            BufferedInputStream origin = null;
            FileOutputStream dest = new FileOutputStream(toLocation);
            ZipOutputStream out = new ZipOutputStream(
                    new BufferedOutputStream(dest));
            if (sourceFile.isDirectory()) {
                zipSubFolder(out, sourceFile, sourceFile.getParent()
                        .length());
            } else {
                byte data[] = new byte[BUFFER];
                FileInputStream fi = new FileInputStream(sourceFile);
                origin = new BufferedInputStream(fi, BUFFER);
                ZipEntry entry = new ZipEntry(
                        getLastPathComponent(sourceFile));
                out.putNextEntry(entry);
                int count;
                while ((count = origin.read(data, 0, BUFFER)) != -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 {

        final int BUFFER = 2048;

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

                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();
            }
        }
    }

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

Related

  1. zip(String[] files, String zipFile)
  2. zip(File srcFile, File targetFile)
  3. zip(File[] _files, File _zipFile)
  4. zip(List listFiles, String destZipFilePath)
  5. zipFile(File source, String basePath, ZipOutputStream zos)
  6. decompress(File file)
  7. decompress(File file)
  8. decompress(File file, boolean delete)
  9. decompress(File file, boolean delete)