以流的方式进行压缩文件

Posted qingmuchuanqi48

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了以流的方式进行压缩文件相关的知识,希望对你有一定的参考价值。

这个工具类知道了已经要压缩的文件的路径,然后需要将这个路径下的文件进行压缩。

    /**
     * 压缩下载照片
     *
     * @param picUrl
     * @param response
     * @throws IOException
     */
    public static void downloadPic(List<String> picUrl, HttpServletResponse response) throws IOException, AdminException {
        try {
            String downloadFilename = System.currentTimeMillis() + ".zip";//文件的名称
            downloadFilename = URLEncoder.encode(downloadFilename, "UTF-8");//转换中文否则可能会产生乱码
            response.setContentType("application/octet-stream");// 指明response的返回对象是文件流
            response.setHeader("Content-Disposition", "attachment;filename=" + downloadFilename);// 设置在下载框默认显示的文件名
            ZipOutputStream zos = new ZipOutputStream(response.getOutputStream());
            String[] files = new String[picUrl.size()];
            picUrl.toArray(files);
            for (int i = 0; i < files.length; i++) {
                String url = files[i];
                zos.putNextEntry(new ZipEntry(downloadFilename + File.separator + i + ".jpg"));
                InputStream fis = new FileInputStream(new File(url));
                byte[] buffer = new byte[1024];
                int r = 0;
                while ((r = fis.read(buffer)) != -1) {
                    zos.write(buffer, 0, r);
                }
                fis.close();
            }
            zos.flush();
            zos.close();
        } catch (UnsupportedEncodingException e) {
            logger.error("不支持当前格式",e);
        }
    }

 

以上是关于以流的方式进行压缩文件的主要内容,如果未能解决你的问题,请参考以下文章

以流的方式下载文件

通过java的i/o机制进行图片流的存储

Hibernate 以流的方式获取数据

nodejs+koa以流的形式返回数据

将zip文件以流的形式输出到页面

java以流的形式输出文件