亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Java多文件生成并壓縮下載功能(思路詳解)

 更新時間:2022年02月15日 10:11:14   作者:流蘇打  
這篇文章主要介紹了Java多文件生成并壓縮下載,本文給大家分享兩種思路通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下

年前一直忙著項目現(xiàn)場實施,沒時間整理,今天終于得空開始整理。

做WMS系統(tǒng)經(jīng)常會遇到導出各種類型的庫存單,此時就可以在后臺將這些整合壓縮到一個壓縮包內然后再下載壓縮包,一個接口就可以完成的事。

有兩個思路:

思路一:將生成的多個文件先逐個存到本地一個臨時的文件夾內并壓縮,獲取壓縮文件下載,下載完以后刪除該臨時文件夾和內部文件 思路二:所有都在內存中實現(xiàn),將生成的多個文件的輸出流轉換成為byte數(shù)組塞入壓縮包的輸出流中,最后下載該壓縮包

第一個思路雖然操作復雜,但是卻很容易想到的。

第二個思路,所有文件流都放在內存中操作,操作大大的簡便了。本文將要講述的就是此種方式。

controller層:

//思路二:所有都在內存中實現(xiàn),將生成的多個文件的輸出流轉換成為byte數(shù)組塞入壓縮包的輸出流中,最后下載該壓縮包
    @RequestMapping("/zip/download2")
    public void downloadZip2(String name, HttpServletResponse httpResponse) {
        documentService.downloadReport(name, httpResponse);
    }

service層:

public void downloadReport(String name, HttpServletResponse httpResponse){
 
        //使用EasyExcel生成excel表1
        Map excelOut = exportExcel(name);
        //使用EasyExcel生成excel表2(同上)
        Map excelOut2 = exportExcel2(name);
        //將要壓縮的文件塞到一個list里面
        List<Map> fileList = new ArrayList();
        fileList.add(excelOut);
        fileList.add(excelOut2);
        //壓縮多個文件并下載
        zipFiles(fileList,httpResponse);
    }

要養(yǎng)成一個良好的習慣,當一個方法中的代碼量過于臃腫時候,要抽出來一部分生成一個新的方法來給調用。

 //生成excel表格導出到本地
    public Map exportExcel(String name) {
        List<User> userList = userDao.queryUsersByName(name);
        try (ByteArrayOutputStream out = new ByteArrayOutputStream()) {
            //使用easyExcel導出excel
            String excelFileName = "根據(jù)人名查詢數(shù)據(jù).xlsx";
            ExcelWriter writer = new ExcelWriter(out, ExcelTypeEnum.XLSX, true);
            Sheet sheet = new Sheet(1, 0, User.class);
            //設置自適應寬度
            sheet.setAutoWidth(Boolean.TRUE);
            writer.write(userList, sheet);
            writer.finish();
            Map excelOut = new HashMap();
            excelOut.put("fileName",excelFileName);
            excelOut.put("outByte",out.toByteArray());
            return excelOut;
        } catch (Exception e) {
            log.error(e.getMessage(), e);
        }
        return null;
    }
 //多個文件壓縮成壓縮包并下載
    public void zipFiles(List<Map> fileList,HttpServletResponse httpResponse) {
        try(ZipOutputStream zipOutputStream = new ZipOutputStream(httpResponse.getOutputStream()); OutputStream out =null) {
            //下載壓縮包
            httpResponse.setContentType("application/zip");
            httpResponse.setHeader("Content-Disposition", "attachment;fileName=" + URLEncoder.encode("附件.zip", "UTF-8"));
            // 創(chuàng)建 ZipEntry 對象
            for (Map map:fileList){
                ZipEntry zipEntry =  new ZipEntry((String) map.get("fileName"));
                zipOutputStream.putNextEntry(zipEntry);
                zipOutputStream.write((byte[]) map.get("outByte"));
            }
        } catch (IOException e) {
            log.error(e.getMessage(), e);
        }
    }

dao層就是簡單的一個sql語句根據(jù)用戶名稱查詢用戶數(shù)據(jù)

如此便完成了多文件壓縮并下載的功能,如下。

當然,思路一雖然復雜,但是對于新手同學我還是建議把思路一自己實現(xiàn)一下,其中對于文件IO的一些操作將會讓你更加容易理解并吸收。

到此這篇關于Java多文件生成并壓縮下載的文章就介紹到這了,更多相關Java多文件壓縮下載內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • 利用棧使用簡易計算器(Java實現(xiàn))

    利用棧使用簡易計算器(Java實現(xiàn))

    這篇文章主要為大家詳細介紹了Java利用棧實現(xiàn)簡易計算器,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-09-09
  • JAVA讀取屬性文件的幾種方法總結

    JAVA讀取屬性文件的幾種方法總結

    以下是對在JAVA中讀取屬性文件的幾種方法進行了詳細的總結介紹,需要的朋友可以過來參考下,希望對大家有所幫助
    2013-10-10
  • Java分頁工具類及其使用(示例分享)

    Java分頁工具類及其使用(示例分享)

    本篇文章主要分享了Java分頁工具類及其使用的示例代碼,具有一定的參考價值,下面跟著小編一起來看下吧
    2017-01-01
  • 通過Java代碼來創(chuàng)建view的方法

    通過Java代碼來創(chuàng)建view的方法

    本文給大家分享通過java代碼創(chuàng)建view的方法,以TextView為例創(chuàng)建控件的方法,需要的的朋友參考下吧
    2017-08-08
  • JAVALambda表達式與函數(shù)式接口詳解

    JAVALambda表達式與函數(shù)式接口詳解

    大家好,本篇文章主要講的是JAVALambda表達式與函數(shù)式接口詳解,感興趣的同學趕快來看一看吧,對你有幫助的話記得收藏一下
    2022-02-02
  • Spring+SpringMVC+Hibernate整合實例講解

    Spring+SpringMVC+Hibernate整合實例講解

    在本篇文章里小編給大家整理的是關于Spring+SpringMVC+Hibernate整合實例講解,需要的朋友們可以學習下。
    2020-03-03
  • JVM調優(yōu)OutOfMemoryError異常分析

    JVM調優(yōu)OutOfMemoryError異常分析

    這篇文章主要為大家介紹了JVM調優(yōu)OutOfMemoryError異常分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-11-11
  • java實現(xiàn)文件導入導出

    java實現(xiàn)文件導入導出

    這篇文章主要介紹了java實現(xiàn)文件導入導出的方法和具體示例代碼,非常的簡單實用,有需要的小伙伴可以參考下
    2016-04-04
  • 詳解Spring Boot 異步執(zhí)行方法

    詳解Spring Boot 異步執(zhí)行方法

    這篇文章主要介紹了Spring Boot 異步執(zhí)行方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-03-03
  • Java中指定時區(qū)的3種方法

    Java中指定時區(qū)的3種方法

    這篇文章主要介紹了Java中指定時區(qū)的3種方法,本文是一個JAVA項目和.NET項目通訊時遇到的問題,本文給出JAVA中的3種解決方法,需要的朋友可以參考下
    2015-02-02

最新評論