Here you can find the source of zipFileAtPath(final String sourcePath, final String toLocation)
public static boolean zipFileAtPath(final String sourcePath, final String toLocation)
//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 { /**// w w w.j ava 2s .c o m * * Zips a file at a location and places the resulting zip file at the * toLocation Example: zipFileAtPath("downloads/myfolder", * "downloads/myFolder.zip"); */ public static boolean zipFileAtPath(final String sourcePath, final String toLocation) { // ArrayList<String> contentList = new ArrayList<String>(); final int BUFFER = 2048; final File sourceFile = new File(sourcePath); try { BufferedInputStream origin = null; final FileOutputStream dest = new FileOutputStream(toLocation); final ZipOutputStream out = new ZipOutputStream( new BufferedOutputStream(dest)); if (sourceFile.isDirectory()) { zipSubFolder(out, sourceFile, sourceFile.getParent() .length()); } else { final byte data[] = new byte[BUFFER]; final FileInputStream fi = new FileInputStream(sourcePath); origin = new BufferedInputStream(fi, BUFFER); final ZipEntry entry = new ZipEntry( getLastPathComponent(sourcePath)); out.putNextEntry(entry); int count; while ((count = origin.read(data, 0, BUFFER)) != -1) { out.write(data, 0, count); } } out.close(); } catch (final Exception e) { e.printStackTrace(); return false; } return true; } private static void zipSubFolder(final ZipOutputStream out, final File folder, final int basePathLength) throws IOException { final int BUFFER = 2048; final File[] fileList = folder.listFiles(); BufferedInputStream origin = null; for (final File file : fileList) { if (file.isDirectory()) { zipSubFolder(out, file, basePathLength); } else { final byte data[] = new byte[BUFFER]; final String unmodifiedFilePath = file.getPath(); final String relativePath = unmodifiedFilePath .substring(basePathLength); Log.i("ZIP SUBFOLDER", "Relative Path : " + relativePath); final FileInputStream fi = new FileInputStream( unmodifiedFilePath); origin = new BufferedInputStream(fi, BUFFER); final 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 String getLastPathComponent(final String filePath) { final String[] segments = filePath.split("/"); final String lastPathComponent = segments[segments.length - 1]; return lastPathComponent; } }