package com.github.elizabetht.controller;
import java.io.*;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;
public class Zip
{
private static void zipDirectory(ZipOutputStream zos, String dirName,
String basePath) throws Exception
{
File dir = new File(dirName);
if (dir.exists())
{
File files[] = dir.listFiles();
if (files.length > 0)
{
for (File file : files)
{
if (file.isDirectory())
{
zipDirectory(zos, file.getPath(), basePath
+ file.getName().substring(
file.getName().lastIndexOf(
File.separator) + 1)
+ File.separator);
}
else
zipFile(zos, file.getPath(), basePath);
}
}
else
{
ZipEntry ze = new ZipEntry(basePath);
zos.putNextEntry(ze);
}
}
}
private static void zipFile(ZipOutputStream zos, String filename,
String basePath) throws Exception
{
File file = new File(filename);
if (file.exists())
{
FileInputStream fis = new FileInputStream(filename);
ZipEntry ze = new ZipEntry(basePath + file.getName());
zos.putNextEntry(ze);
byte[] buffer = new byte[8192];
int count = 0;
while ((count = fis.read(buffer)) > 0)
{
zos.write(buffer, 0, count);
}
fis.close();
}
}
public static void compress(String zipFilename, String... paths)
throws Exception
{
compress(new FileOutputStream(zipFilename), paths);
}
public static void compress(OutputStream os, String... paths)
throws Exception
{
ZipOutputStream zos = new ZipOutputStream(os);
for (String path : paths)
{
if(path.equals("")) continue;
java.io.File file = new java.io.File(path);
if (file.exists())
{
if (file.isDirectory())
{
zipDirectory(zos, file.getPath(), file.getName() + File.separator);
}
else
{
zipFile(zos, file.getPath(), "");
}
}
}
zos.close();
}
public static void main(String[] args) throws Exception{
compress("E:/输出.zip","E:/草稿箱","E:/垃圾箱");
}}