• 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();
            }
        }
    }
  • 相关阅读:
    2019-02-08 Python学习之Scrapy的简单了解
    2019-02-07 selenium...
    2019-02-06 单链表的整表创建及增删插
    2019-02-05 Linux的一些常用命令学习2
    2019-02-04 Linux的一些常用命令学习
    2019-02-03 线性表的顺序储存结构C语言实现
    2019-02-03 多进程和多线程的区别【】
    python 多进程
    Tftp文件传输服务器(基于UDP协议)
    多线程实现tcp聊天服务器
  • 原文地址:https://www.cnblogs.com/shihaiming/p/7338756.html
Copyright © 2020-2023  润新知