zoukankan      html  css  js  c++  java
  • zip 压缩文件夹

    import java.io.*;
    import java.util.zip.*;
    /**
     * @author Dana·Li
     * <p>
     * 程序实现了ZIP压缩[compression]
     * <p>
     * 大致功能包括用了多态,递归等JAVA核心技术,可以对单个文件和任意级联文件夹进行压缩和解压。 需在代码中自定义源输入路径和目标输出路径。
     * <p>
     * 在本段代码中,实现的是压缩部分
     */
    public class ZipUtil {
        
        /**
         * @param zipFileName 生成后得压缩文件目录
         * @param inputFile   要压缩的目录
         * @throws Exception
         */
        public static void zip(String zipFileName, File inputFile) throws Exception {
            System.out.println("压缩中...");
            ZipOutputStream out = new ZipOutputStream(new FileOutputStream(zipFileName));
            BufferedOutputStream bo = new BufferedOutputStream(out);
            zip(out, inputFile, inputFile.getName(), bo);
            bo.close();
            out.close(); // 输出流关闭
            System.out.println("压缩完成");
        }
        
        public static void zip(ZipOutputStream out, File f, String base, BufferedOutputStream bo) throws Exception { // 方法重载
            if (f.isDirectory()){
                File[] fl = f.listFiles();
                if (fl.length == 0){
                    out.putNextEntry(new ZipEntry(base + "/")); // 创建zip压缩进入点base
                    System.out.println(base + "/");
                }
                for (int i = 0; i < fl.length; i++) {
                    zip(out, fl[i], base + "/" + fl[i].getName(), bo); // 递归遍历子文件夹
                }
            } else {
                out.putNextEntry(new ZipEntry(base)); // 创建zip压缩进入点base
                System.out.println(base);
                FileInputStream in = new FileInputStream(f);
                BufferedInputStream bi = new BufferedInputStream(in);
                int b;
                while ((b = bi.read()) != -1) {
                    bo.write(b); // 将字节流写入当前zip目录
                }
                bi.close();
                in.close(); // 输入流关闭
            }
        }
        
        /**
         * 测试
         * @param args
         */
        public static void main(String[] args) {
            try {
                ZipUtil.zip("D:\ziptest.zip", new File("D:\test"));
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }
  • 相关阅读:
    免费获取pptv会员
    LNMP环境包安装IonCube教程
    linux系统lnmp环境包搬家教程
    进入网站自动加自己为QQ好友代码
    vip视频解析接口
    CF使用TGP下载后,分卷文件损坏的解决方法
    体育赛事
    浅谈thinkphp中将字符串转换成json数组的方法
    android ANR问题
    android 单例模式
  • 原文地址:https://www.cnblogs.com/shihaiming/p/7338756.html
Copyright © 2011-2022 走看看