• java文件压缩ZipOutPutStream


    其实最好的书籍就是javaAPI

    1.创建ZipOutPutStream流,利用BufferedOutputStream提个速.

    2.新建zip方法,用来压缩文件,传参

    3.zip方法利用putNextEntry来将目录点写入

    4.递归目录数组

    5.写入数据,关闭流

    /**
     * 压缩
     * @author BinPeng
     * @date 2019/8/6 18:19
     */
    public class Zip18 {
        public static void main(String[] args) throws IOException {
            compreSsion("F:\test.zip",new File("F:\test"));//第一个参数是压缩的名字,第二个参数是要压缩的目录
        }
        private static void compreSsion(String zipFileName, File target) throws IOException {//压缩
            System.out.println("压缩文件...");
            ZipOutputStream out=new ZipOutputStream(new FileOutputStream(zipFileName));
            BufferedOutputStream bos=new BufferedOutputStream(out);
            zip(out,target,target.getName(),bos);
            bos.close();
            out.close();
            System.out.println("压缩完成");
        }
    
        private static void zip(ZipOutputStream zout, File target, String name, BufferedOutputStream bos) throws IOException {
            //判断是不是目录
            if (target.isDirectory()){
              File[] files=target.listFiles();
              if (files.length==0){//空目录
                  zout.putNextEntry(new ZipEntry(name+"/"));
                /*  开始编写新的ZIP文件条目,并将流定位到条目数据的开头。
                  关闭当前条目,如果仍然有效。 如果没有为条目指定压缩方法,
                  将使用默认压缩方法,如果条目没有设置修改时间,将使用当前时间。*/
              }
              for (File f:files){
                  //递归处理
                  zip(zout,f,name+"/"+f.getName(),bos);
              }
            }else {
                    zout.putNextEntry(new ZipEntry(name));
                    InputStream inputStream=new FileInputStream(target);
                    BufferedInputStream bis=new BufferedInputStream(inputStream);
                    byte[] bytes=new byte[1024];
                    int len=-1;
                    while ((len=bis.read(bytes))!=-1){
                        bos.write(bytes,0,len);
                    }
                    bis.close();
    
            }
    
        }
    
    }
    

      

    
    
  • 相关阅读:
    webpack
    一 java包管理
    docker 保存本地容器 推送镜像
    virtualBox 安装linux系统 网络设置小记
    centos6.5编译安装nginx[整理二]
    go基本使用
    docker基础命令使用
    centos 安装docker
    docker 删除容器及镜像
    PHP Thread Safe和Non ThreadSafe
  • 原文地址:https://www.cnblogs.com/july7/p/11316721.html
Copyright © 2020-2023  润新知