java实现生成zip和下载zip

    //生成zip
    public boolean createCardImgZip(String sourcePath, String zipName) {  
    // TODO Auto-generated method stub  
    boolean result = false;  
    String zipPath = "D:/test/";  
    File sourceFile = new File(sourcePath);  
    FileInputStream fis = null;  
    BufferedInputStream bis = null;  
    FileOutputStream fos = null;  
    ZipOutputStream zos = null;  

    if (sourceFile.exists() == false) {  
        System.out.println("File catalog:" + sourcePath + "not exist!");  
    } else {  
        try {  
            if(!new File(zipPath).exists()){  
                new File(zipPath).mkdirs();  
            }  
            File zipFile = new File(zipPath + "/" + zipName + ".zip");  
            if (zipFile.exists()) {  
                System.out.println(zipPath + "Catalog File: " + zipName + ".zip" + "pack file.");  
            } else {  
                File[] sourceFiles = sourceFile.listFiles();  
                if (null == sourceFiles || sourceFiles.length < 1) {  
                    System.out.println("File Catalog:" + sourcePath + "nothing in there,don't hava to compress!");  
                } else {  
                    fos = new FileOutputStream(zipFile);  
                    zos = new ZipOutputStream(new BufferedOutputStream(fos));  
                    byte[] bufs = new byte[1024 * 10];  
                    for (int i = 0; i < sourceFiles.length; i++) {  
                        // create .zip and put pictures in  
                        ZipEntry zipEntry = new ZipEntry(sourceFiles[i].getName());  
                        zos.putNextEntry(zipEntry);  
                        // read documents and put them in the zip  
                        fis = new FileInputStream(sourceFiles[i]);  
                        bis = new BufferedInputStream(fis, 1024 * 10);  
                        int read = 0;  
                        while ((read = bis.read(bufs, 0, 1024 * 10)) != -1) {  
                            zos.write(bufs, 0, read);  
                        }  
                    }  
                    result = true;  
                }  
            }  
        } catch (FileNotFoundException e) {  
            e.printStackTrace();  
            throw new RuntimeException(e);  
        } catch (IOException e) {  
            e.printStackTrace();  
            throw new RuntimeException(e);  
        } finally {  
            try {  
                if (null != bis)  
                    bis.close();  
                if (null != zos)  
                    zos.close();  
            } catch (IOException e) {  
                e.printStackTrace();  
                throw new RuntimeException(e);  
            }  
        }  
    }  
    return result;  
}

    //下载zip
    public String downLoadZip() {  
    String fileName = "test.zip";  
    String path = "D:\\test\\test.zip";  
    try {  
        HttpServletResponse response = ServletActionContext.getResponse();  
        File file = new File(path);  
        response.setCharacterEncoding("UTF-8");  
        response.setHeader("Content-Disposition",  
                "attachment; filename=" + new String(fileName.getBytes("UTF-8"), "ISO8859-1"));  
        response.setContentLength((int) file.length());  
        response.setContentType("application/zip");// 定义输出类型  
        FileInputStream fis = new FileInputStream(file);  
        BufferedInputStream buff = new BufferedInputStream(fis);  
        byte[] b = new byte[1024];// 相当于我们的缓存  
        long k = 0;// 该值用于计算当前实际下载了多少字节  
        OutputStream myout = response.getOutputStream();// 从response对象中得到输出流,准备下载  
        // 开始循环下载  
        while (k < file.length()) {  
            int j = buff.read(b, 0, 1024);  
            k += j;  
            myout.write(b, 0, j);  
        }  
        myout.flush();  
        buff.close();  
        file.delete();  
    } catch (Exception e) {  
        System.out.println(e);  
    }  
    return null;  
}  
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容