首页 > 学院 > 开发设计 > 正文

zip压缩多个路径的文件或目录到指定zip

2019-11-06 09:00:30
字体:
来源:转载
供稿:网友
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:/垃圾箱");    }}
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表