Java Zip Folder zipFolder(final File srcFolder, final OutputStream out)

Here you can find the source of zipFolder(final File srcFolder, final OutputStream out)

Description

zip Folder

License

Apache License

Declaration

public static void zipFolder(final File srcFolder, final OutputStream out) throws IOException 

Method Source Code

//package com.java2s;
/*#######################################################
 *
 *   Maintained by Gregor Santner, 2017-
 *   https://gsantner.net///from  w ww  .  j  av  a  2  s.  co m
 *
 *   License: Apache 2.0
 *  https://github.com/gsantner/opoc/#licensing
 *  https://www.apache.org/licenses/LICENSE-2.0
 *
#########################################################*/

import java.io.File;
import java.io.FileInputStream;

import java.io.IOException;

import java.io.OutputStream;
import java.util.zip.ZipEntry;

import java.util.zip.ZipOutputStream;

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

    public static void zipFolder(final File srcFolder, final OutputStream out) throws IOException {
        ZipOutputStream outZip = null;
        try {
            outZip = new ZipOutputStream(out);
            addFolderToZip("", srcFolder, outZip);
        } finally {
            if (outZip != null) {
                try {
                    outZip.close();
                } catch (IOException ignored) {
                }
            }
        }
    }

    private static void addFolderToZip(String pathInsideZip, final File folderToZip, final ZipOutputStream outZip)
            throws IOException {
        pathInsideZip = pathInsideZip.isEmpty() ? folderToZip.getName()
                : pathInsideZip + "/" + folderToZip.getName();

        File[] files = folderToZip.listFiles();
        if (files != null) {
            for (File file : files)
                addFileToZip(pathInsideZip, file, outZip);
        }
    }

    private static void addFileToZip(final String pathInsideZip, final File fileToZip, final ZipOutputStream outZip)
            throws IOException {
        if (fileToZip.isDirectory()) {
            addFolderToZip(pathInsideZip, fileToZip, outZip);
        } else {
            FileInputStream in = null;
            try {
                in = new FileInputStream(fileToZip);
                outZip.putNextEntry(new ZipEntry(pathInsideZip + "/" + fileToZip.getName()));

                int count;
                byte[] buffer = new byte[BUFFER_SIZE];
                while ((count = in.read(buffer)) > 0)
                    outZip.write(buffer, 0, count);

            } finally {
                if (in != null) {
                    try {
                        in.close();
                    } catch (IOException ignored) {
                    }
                }
            }
        }
    }
}

Related

  1. zipFolder(File root)
  2. zipFolder(File source, File destination)
  3. zipFolder(File srcFolder, File destZipFile, boolean zipOnlySrcFolderContentsAndNotSrcFolder)
  4. zipFolder(File srcFolder, String destZipFile)
  5. zipFolder(final File directory, final String path, final ZipOutputStream out)
  6. zipFolder(final String srcFolder, final String destZipFile)
  7. zipFolder(String sourceDir, String destDir, String name)
  8. zipFolder(String sourceFolder, String target)
  9. zipFolder(String srcFolder, String destZipFile)