• java zip 批量打包(java.util包和apache.tools包)


    /**
         * 文件批量打包
         * @param zipPath  打包路径
         * @param files  批量文件
         */
        public void zipOut(String zipPath,File[] files){
            byte[] buffer = new byte[1024];
            try {
                ZipOutputStream out = new ZipOutputStream(new FileOutputStream(zipPath));  
                for(int i=0;i<files.length;i++) {  
                    FileInputStream fis = new FileInputStream(files[i]);  
                    out.putNextEntry(new ZipEntry(files[i].getName()));  
                    int len;  
                    //读入需要下载的文件的内容,打包到zip文件  
                    while((len = fis.read(buffer))>0) {  
                        out.write(buffer,0,len);   
                    }  
                    out.closeEntry();  
                    fis.close();
                    //删除文件,可以不删
                    files[i].delete();
                }  
                out.close();
            } catch (FileNotFoundException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }  
            System.out.println("生成zip文件成功");  
        }

     以上为java.util包zip的压缩方式,弊端是不能修改编码。下面介绍apache.tools包zip的压缩方式。

    /**
         * 创建ZIP文件
         * @param zipPath 生成的zip文件存在路径(包括文件名) 
         * @param files  写入的文件
         */
        public static void zipOut(String zipPath,File[] files) { 
            FileOutputStream fos = null; 
            ZipOutputStream zos = null; 
            try { 
                fos = new FileOutputStream(zipPath); 
                zos = new ZipOutputStream(fos); 
                writeZip(files, zos); 
            } catch (FileNotFoundException e) {
                System.out.println("创建ZIP文件失败");
            } finally { 
                try { 
                    if (zos != null) { 
                        zos.close(); 
                    } 
                } catch (IOException e) {
                    System.out.println("创建ZIP文件失败");
                } 
       
            } 
        } 
        /**
         * 写入内容     
         * @param files
         * @param zos
         */
        private static void writeZip(File[] files, ZipOutputStream zos) { 
            for(int i=0;i<files.length;i++) {
                if(files[i].exists()){
                    FileInputStream fis=null; 
                    DataInputStream dis=null; 
                    try { 
                        fis=new FileInputStream(files[i]); 
                        dis=new DataInputStream(new BufferedInputStream(fis)); 
                        ZipEntry ze = new ZipEntry(files[i].getName()); 
                        zos.putNextEntry(ze); 
                        //添加编码,如果不添加,当文件以中文命名的情况下,会出现乱码 
                        // ZipOutputStream的包一定是apache的ant.jar包。JDK也提供了打压缩包,但是不能设置编码 
                        zos.setEncoding("GBK"); 
                        byte [] content=new byte[1024]; 
                        int len; 
                        while((len=fis.read(content))!=-1){ 
                            zos.write(content,0,len); 
                            zos.flush(); 
                        } 
                    } catch (FileNotFoundException e) {
                        System.out.println("创建ZIP文件失败");
                    } catch (IOException e) {
                        System.out.println("创建ZIP文件失败");
                    }finally{ 
                        try { 
                            if(dis!=null){ 
                                dis.close(); 
                            } 
                        }catch(IOException e){
                            System.out.println("创建ZIP文件失败");
                        } 
                    }
                }
            }
        }  
  • 相关阅读:
    Interviewe(hdu3486)
    Cornfields(poj2019)
    C. Watching Fireworks is Fun(Codeforces 372C)
    A. Points on Line
    Fence(poj1821)
    7
    如何使用Visual Studio调试C#程序
    do…while语句
    通过ASP.NET Ajax技术模拟实现NBA比赛文字直播功能
    RecyclerView的基础用法
  • 原文地址:https://www.cnblogs.com/ljl-blog/p/5718508.html
Copyright © 2020-2023  润新知