Description
Zips the specified files, including directories and nested directories into the specified zip file.
License
CDDL license
Parameter
Parameter | Description |
---|
files | the File s (including directories) to zip |
baseFolderName | the folder that will be created when unzipping the zip file |
toZipFile | the zip file (that will be created) |
Exception
Parameter | Description |
---|
IOException | when the files can't be zipped for some reason |
Declaration
public static void zip(Iterable<File> files, String baseFolderName,
String toZipFile) throws IOException
Method Source Code
//package com.java2s;
/*//from ww w .j a v a 2 s . c o m
* 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.FileOutputStream;
import java.io.IOException;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;
public class Main {
/**
* Zips the specified files, including directories and nested directories into the specified zip file.
*
* @param files the {@link File}s (including directories) to zip
* @param baseFolderName the folder that will be created when unzipping the zip file
* @param toZipFile the zip file (that will be created)
*
* @throws IOException when the files can't be zipped for some reason
*/
public static void zip(Iterable<File> files, String baseFolderName,
String toZipFile) throws IOException {
ZipOutputStream zip = new ZipOutputStream(new FileOutputStream(
toZipFile));
if (files != null) {
for (File file : files) {
if (file.exists()) {
if (file.isDirectory()) {
addFolderToZip(file, baseFolderName, zip);
} else {
addFileToZip(file, baseFolderName, zip);
}
}
}
}
zip.flush();
zip.close();
}
/**
* 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();
}
}
}
Related
- zip(Collection files, File zipFile)
- zip(File zipFile, File parentDir, File[] sources, char pathSeparator)
- zip(File zipFile, File[] files)
- zip(File zipFile, File[] files)
- zip(File zipFile, List files)
- zip(List runtimeLibFiles, File saturnContainerDir, File zipFile)
- zip(List fileNames, List fileContents)
- zip(List fileNames, String outFileName)
- zip(List srcFiles, OutputStream os)