• 文件压缩下载 和 解压缩并解析


    package com.utils.file;
    
    import java.io.BufferedInputStream;
    import java.io.BufferedOutputStream;
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileNotFoundException;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.util.ArrayList;
    import java.util.List;
    import java.util.zip.ZipEntry;
    import java.util.zip.ZipInputStream;
    import java.util.zip.ZipOutputStream;
    import javax.servlet.ServletOutputStream;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    import org.springframework.stereotype.Controller;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.ResponseBody;
    
    @Controller
    public class ZipUtil {
        
            private ZipUtil() {
                
            }
            
            /**
             * pdf  压缩下载
             * @param response
             * @throws IOException
             */
            @ResponseBody
            @RequestMapping("/zipDownload.do")
            public static void downZipFile(HttpServletRequest request, HttpServletResponse res){
                String basePath="C:\Users\Desktop\2020.pdf";
                File file = new File(basePath);
                File file1=new File("C:\Users\Desktop\2020.zip");
                File files=new File("C:\Users\Desktop");
                if(!files.exists()){
                files.mkdirs();
                }
                if(!file1.exists()){
                try {
                    file1.createNewFile();
                } catch (IOException e){
                    System.out.println("记录日志");
                    return;
                    }
                }
            try (
            ZipOutputStream zip=new ZipOutputStream(new FileOutputStream(file1));//zip的临时存放地址
            ServletOutputStream outputStream = res.getOutputStream();
            FileInputStream in=new FileInputStream(file1);
            BufferedInputStream ins=new BufferedInputStream(in);){
            //读取zip 大文件的时候 记得添加缓冲区
    //        File[] listFiles = file.listFiles();
    //        createZipFile(listFiles,zip);
            //创建 zip文件
            createZipFile(file,zip);
             zip.close();
             res.setContentType("text/html; charset=UTF-8"); //设置编码字符  
             res.setContentType("application/octet-stream"); //设置内容类型为下载类型  
             res.setHeader("Content-disposition", "attachment;filename=tes.zip");//设置下载的压缩文件名称
            
             byte [] buff=new byte[1024];//记得一定要有缓存池
             int i=0;
             while((i=ins.read(buff))>0){
            outputStream.write(buff,0,i);
            }
             outputStream.flush();
            } catch (Exception e) {
            System.out.println("记录日志");
    
            return;
            }finally {
            //创造的临时文件夹删除
            if(file1.exists()){
            file1.delete();
            }
        }
    }
    
    //    private static void createZipFile(File [] listFiles,ZipOutputStream zip){
        private static void createZipFile(File file,ZipOutputStream zip){
    //        for (File file : listFiles) {
    //是文件
                if(file.isFile()){
                    try(BufferedInputStream buffer=new BufferedInputStream(new FileInputStream(file));){
                    ZipEntry zipEntry=new ZipEntry(file.getName());
                    zip.putNextEntry(zipEntry);
                    byte [] buff=new byte[2048];
                    int i=0;
                    while((i=buffer.read(buff))>0){
                        zip.write(buff,0,i);
                    }
                    zip.closeEntry();
                    }catch(Exception e){
                        e.printStackTrace();
                    }
                    }else{
    //                    File listFiles2 = file.listFiles();
    //                    createZipFile(listFiles2,zip);
                        createZipFile(file,zip);
                    }
                }
    //        }
    
        
        
    //==========================================================================
        //zip文件解压缩并解析
        
        
        public static List<String> unzip(String zipFilePath,String outPutDirectory){//输入源zip路径   和 解压文件路径
            List<String> fileList = new ArrayList<String>();
            try {
                ZipInputStream zin = new ZipInputStream(new FileInputStream(zipFilePath));
                BufferedInputStream bin = new BufferedInputStream(zin);
                BufferedOutputStream bout = null;
                File file=null;  
                ZipEntry entry;
                try {
                    while((entry = zin.getNextEntry())!=null && !entry.isDirectory()){
                        file = new File(outPutDirectory,entry.getName());  
                        if(!file.exists()){  
                            (new File(file.getParent())).mkdirs();  
                        }
                        bout = new BufferedOutputStream(new FileOutputStream(file));  
                        int b;
                        while((b=bin.read())!=-1){  
                            bout.write(b);  
                        }
                        bout.flush();
                        fileList.add(file.getAbsolutePath());
                        System.out.println(file+"解压成功");
                    }
                } catch (IOException e) {  
                    e.printStackTrace();  
                }finally{
                    try {
                        bin.close();
                        zin.close();
                        if(bout!=null){
                            bout.close();
                        }
                    } catch (IOException e) {
                        e.printStackTrace();
                    }  
                }
            } catch (FileNotFoundException e) {
                e.printStackTrace();  
            }
            return fileList;
        }
        
                public static void main(String[] args) {
                    
                    String zipFilePath = "C:\Users\Desktop\pay\2020.zip";
                    String outPutDirectory = "C:\Users\Desktop\pay";
                    unzip(zipFilePath,outPutDirectory);
            }
    
    }
  • 相关阅读:
    qq
    qqq
    q
    .json文件
    q
    q
    q
    找jar包的网址
    1qq
    day18(JDBC事务&连接池介绍&DBUtils工具介绍&BaseServlet作用)
  • 原文地址:https://www.cnblogs.com/lifan12589/p/13188617.html
Copyright © 2020-2023  润新知