Java ZipOutputStream Write zipRecursively(String path, File dir, ZipOutputStream out)

Here you can find the source of zipRecursively(String path, File dir, ZipOutputStream out)

Description

zip Recursively

License

Apache License

Declaration

private static void zipRecursively(String path, File dir, ZipOutputStream out) throws IOException 

Method Source Code

//package com.java2s;
/*/* ww  w  .  j ava  2  s  . c om*/
 *    Copyright 2009-2012 University of Toronto
 *
 *    Licensed under the Apache License, Version 2.0 (the "License");
 *    you may not use this file except in compliance with the License.
 *    You may obtain a copy of the License at
 *
 *        http://www.apache.org/licenses/LICENSE-2.0
 *
 *    Unless required by applicable law or agreed to in writing, software
 *    distributed under the License is distributed on an "AS IS" BASIS,
 *    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 *    See the License for the specific language governing permissions and
 *    limitations under the License.
 */

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

import java.io.IOException;

import java.util.zip.ZipEntry;

import java.util.zip.ZipOutputStream;

public class Main {
    private static void zipRecursively(String path, File dir, ZipOutputStream out) throws IOException {
        for (File f : dir.listFiles()) {
            writeFileToZipStream(path, f, out);
            if (f.isDirectory()) {
                zipRecursively(path + "/" + f.getName() + "/", f, out);
            }
        }
    }

    private static void writeFileToZipStream(String path, File f, ZipOutputStream out) throws IOException {
        // name the file inside the zip  file

        if (f.isFile()) {
            out.putNextEntry(new ZipEntry(path + "/" + f.getName()));

            FileInputStream in = new FileInputStream(f);
            byte[] b = new byte[1024];
            int count;
            while ((count = in.read(b)) > 0) {
                out.write(b, 0, count);
            }
            in.close();
        } else if (f.isDirectory()) {
            out.putNextEntry(new ZipEntry(f.getName() + "/"));
        }
    }
}

Related

  1. zipIt(ZipOutputStream zos, String[] directoriesAndFiles, CRC32 crc)
  2. zipOneFile(File file, String base, ZipOutputStream zout)
  3. zipOneFile(File file, ZipOutputStream out, String relativePath)
  4. zipOneFile(String prefix, File file, ZipOutputStream zos)
  5. zipRecurse(File file, int prefixLength, ZipOutputStream zos)
  6. zipStoreBuffer(ZipOutputStream zip, String name, byte[] dataBuffer)
  7. zipToStream(File file, int prefixLength, ZipOutputStream out)