Here you can find the source of addFolderToZip(File folder, String parentFolderName, ZipOutputStream zip)
Parameter | Description |
---|---|
folder | a File representing a folder to add |
parentFolderName | the parent folder of the File |
zip | the ZipOutputStream to which to write the File |
Parameter | Description |
---|---|
IOException | should any problems occur |
private static void addFolderToZip(File folder, String parentFolderName, ZipOutputStream zip) throws IOException
//package com.java2s; /*/*from w w w .ja v a 2 s . c om*/ * File: FileHelper.java * * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. * * The contents of this file are subject to the terms and conditions of * the Common Development and Distribution License 1.0 (the "License"). * * You may not use this file except in compliance with the License. * * You can obtain a copy of the License by consulting the LICENSE.txt file * distributed with this file, or by consulting https://oss.oracle.com/licenses/CDDL * * See the License for the specific language governing permissions * and limitations under the License. * * When distributing the software, include this License Header Notice in each * file and include the License file LICENSE.txt. * * MODIFICATIONS: * If applicable, add the following below the License Header, with the fields * enclosed by brackets [] replaced by your own identifying information: * "Portions Copyright [year] [name of copyright owner]" */ import java.io.BufferedInputStream; 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 { /** * Recursively adds the contents of the specified {@link File} representing a folder to the * specified {@link ZipOutputStream}. * * @param folder a {@link File} representing a folder to add * @param parentFolderName the parent folder of the {@link File} * @param zip the {@link ZipOutputStream} to which to write the {@link File} * * @throws IOException should any problems occur */ private static void addFolderToZip(File folder, String parentFolderName, ZipOutputStream zip) throws IOException { String parent = parentFolderName == null || parentFolderName.trim().isEmpty() ? "" : parentFolderName.trim() + "/"; if (folder.exists()) { File[] files = folder.listFiles(); if (files != null) { for (File file : files) { if (file.isDirectory()) { addFolderToZip(file, parent + file.getName(), zip); } else { addFileToZip(file, parentFolderName, zip); } } } } } /** * Adds a specified {@link File} (that is not a folder) to the specified * {@link ZipOutputStream}, the {@link File} being located in the specified parent * folder. * * @param file a file representing the {@link File} to add * @param parentFolderName the parent folder of the {@link File} * @param zip the {@link ZipOutputStream} to which to write the {@link File} * * @throws IOException should any problems occur */ private static void addFileToZip(File file, String parentFolderName, ZipOutputStream zip) throws IOException { String parent = parentFolderName == null || parentFolderName.trim().isEmpty() ? "" : parentFolderName.trim() + "/"; if (file.exists()) { zip.putNextEntry(new ZipEntry(parent + file.getName())); BufferedInputStream inputStream = new BufferedInputStream( new FileInputStream(file)); byte[] buffer = new byte[16096]; int count = 0; while ((count = inputStream.read(buffer)) != -1) { zip.write(buffer, 0, count); } zip.closeEntry(); } } }