最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

手把手教你用SpringBoot將文件打包成zip存放或?qū)С?/h1>
 更新時(shí)間:2021年06月11日 16:45:51   作者:熊小哥~  
相信各位看官在工作中都會(huì)遇到過(guò)要把多個(gè)文件打包成一個(gè)壓縮文件然后導(dǎo)出,或者將文件打包成Zip存放,這就來(lái)上代碼,廢話不多說(shuō),需要的朋友可以參考下

環(huán)境準(zhǔn)備

其實(shí)也沒(méi)什么準(zhǔn)備,準(zhǔn)備好Springboot就行,還有幾張圖片:

在這里插入圖片描述

將文件打包成Zip存放

代碼

Controller代碼:

@RequestMapping("/zip")
@RestController
public class ZipController {

    /**
     * 將文件打包成zip并存放在特定位置
     */
    @PostMapping("package")
    public void packageFileToZip() throws IOException {
        // 為了方便我直接將文件地址寫好了,各位可以根據(jù)自己的情況修改
        String[] filePath = new String[]{"E:\\ykds\\1068128498917799516.jpg", "E:\\ykds\\1068128498917917980.jpg", "E:\\ykds\\1068128498917807874.jpg"};
        // 將需要打包的文件都放在一個(gè)集合中
        List<File> fileList = new ArrayList<>();
        for (String s : filePath) {
            File file = new File(s);
            fileList.add(file);
        }
        // 先在D盤創(chuàng)建一個(gè)壓縮包
        File zipFile = new File("D:\\package.zip");
        if(!zipFile.exists())
            zipFile.createNewFile();
        // 將package.zip的File對(duì)象傳到toZip對(duì)象中
        ZipUtils.toZip(fileList, zipFile);
    }
}

ZipUTils工具類代碼

public class ZipUtils {

    /**
     * 把文件集合打成zip壓縮包
     * @param srcFiles 壓縮文件集合
     * @param zipFile  zip文件名
     * @throws RuntimeException 異常
     */
    public static void toZip(List<File> srcFiles, File zipFile) throws IOException {
        if(zipFile == null){
            return;
        }
        if(!zipFile.getName().endsWith(".zip")){
            return;
        }
        ZipOutputStream zos = null;
        FileOutputStream out = new FileOutputStream(zipFile);
        try {
            zos = new ZipOutputStream(out);
            for (File srcFile : srcFiles) {
                byte[] buf = new byte[BUFFER_SIZE];
                zos.putNextEntry(new ZipEntry(srcFile.getName()));
                int len;
                // 讀取文件并寫入到zip中
                FileInputStream in = new FileInputStream(srcFile);
                while ((len = in.read(buf)) != -1) {
                    zos.write(buf, 0, len);
                    zos.flush();
                }
                in.close();
            }

        } catch (Exception e) {
            e.printStackTrace();
        }finally {
            if (zos != null) {
                zos.close();
            }
        }
    }
}

測(cè)試

代碼打好了,接下來(lái)測(cè)試下,打開(kāi)熟悉的postman:

在這里插入圖片描述

調(diào)用接口后就會(huì)在D盤中新建一個(gè)package.zip的壓縮包:

在這里插入圖片描述

可以看到,我打包的文件都在這里,再看看能不能正常顯示:

在這里插入圖片描述

very good!

將文件打包成zip并導(dǎo)出

上面的方法只是將壓縮包保存在本地,如果需要導(dǎo)出的話代碼有點(diǎn)不一樣。

代碼

Controller代碼:

/**
     * 將文件打包成zip并下載
     */
    @PostMapping("download")
    public void download(HttpServletResponse response) throws IOException {
        // 這里還是和上面一樣
        String[] filePath = new String[]{"E:\\ykds\\1068128498917799516.jpg", "E:\\ykds\\1068128498917917980.jpg", "E:\\ykds\\1068128498917807874.jpg"};
        List<File> fileList = new ArrayList<>();
        for (String s : filePath) {
            File file = new File(s);
            fileList.add(file);
        }
        response.setHeader("content-type", "application/octet-stream");
        response.setContentType("application/octet-stream");
        response.setHeader(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=download.zip");
        ZipUtils.downloadZip(response.getOutputStream(), fileList);
    }

ZipUtils工具類代碼

public static void downloadZip(OutputStream outputStream, List<File> fileList){
        BufferedInputStream bufferedInputStream = null;
        ZipOutputStream zipOutputStream = null;
        try {
            zipOutputStream = new ZipOutputStream(outputStream);
            for (File file : fileList) {
                ZipEntry zipEntry = new ZipEntry(file.getName());
                zipOutputStream.putNextEntry(zipEntry);
                byte[] buf = new byte[BUFFER_SIZE];
                int len;
                FileInputStream in = new FileInputStream(file);
                while ((len = in.read(buf)) != -1) {
                    zipOutputStream.write(buf, 0, len);
                    zipOutputStream.flush();
                }
            }
            zipOutputStream.flush();
            zipOutputStream.close();

        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            // 關(guān)閉流
            try {
                if (bufferedInputStream != null) {
                    bufferedInputStream.close();
                }
                if (zipOutputStream != null ) {
                    zipOutputStream.close();
                }
                if (outputStream != null) {
                    outputStream.close();
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
        }

    }

測(cè)試

還是用postman:

在這里插入圖片描述
在這里插入圖片描述

下載完成后打開(kāi)看看

在這里插入圖片描述

到此這篇關(guān)于手把手教你用SpringBoot將文件打包成zip存放或?qū)С龅奈恼戮徒榻B到這了,更多相關(guān)SpringBoot將文件打包成zip內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Hibernate中獲取Session的兩種方式代碼示例

    Hibernate中獲取Session的兩種方式代碼示例

    這篇文章主要介紹了Hibernate中獲取Session的兩種方式代碼示例,具有一定借鑒價(jià)值,需要的朋友可以參考下。
    2017-12-12
  • Eclipse 2020-06 漢化包安裝步驟詳解(附漢化包+安裝教程)

    Eclipse 2020-06 漢化包安裝步驟詳解(附漢化包+安裝教程)

    這篇文章主要介紹了Eclipse 2020-06 漢化包安裝步驟(附漢化包+安裝教程),本文通過(guò)圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-08-08
  • Java  HttpURLConnection超時(shí)和IO異常處理

    Java HttpURLConnection超時(shí)和IO異常處理

    這篇文章主要介紹了Java HttpURLConnection超時(shí)和IO異常處理的相關(guān)資料,需要的朋友可以參考下
    2016-09-09
  • 使用spring+maven不同環(huán)境讀取配置方式

    使用spring+maven不同環(huán)境讀取配置方式

    這篇文章主要介紹了使用spring+maven不同環(huán)境讀取配置方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-08-08
  • 動(dòng)態(tài)配置Spring Boot日志級(jí)別的全步驟

    動(dòng)態(tài)配置Spring Boot日志級(jí)別的全步驟

    這篇文章主要給大家介紹了關(guān)于動(dòng)態(tài)配置Spring Boot日志級(jí)別的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用Spring Boot具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-04-04
  • windows下 jdk1.7安裝教程圖解

    windows下 jdk1.7安裝教程圖解

    java編程的初學(xué)者在開(kāi)始編碼前都會(huì)遇到一個(gè)難題,那就是jdk1.7環(huán)境變量配置怎么操作,怎么安裝,針對(duì)這個(gè)難題,小編特地為大家整理相關(guān)教程,不了解的朋友可以前往查看使用
    2018-05-05
  • Java ZooKeeper分布式鎖實(shí)現(xiàn)圖解

    Java ZooKeeper分布式鎖實(shí)現(xiàn)圖解

    ZooKeeper是一個(gè)分布式的,開(kāi)放源碼的分布式應(yīng)用程序協(xié)調(diào)服務(wù),是Google的Chubby一個(gè)開(kāi)源的實(shí)現(xiàn),是Hadoop和Hbase的重要組件。它是一個(gè)為分布式應(yīng)用提供一致性服務(wù)的軟件,提供的功能包括:配置維護(hù)、域名服務(wù)、分布式同步、組服務(wù)等
    2022-03-03
  • Java之jpa入門教程講解

    Java之jpa入門教程講解

    這篇文章主要介紹了Java之jpa入門教程講解,本篇文章通過(guò)簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-08-08
  • HashMap在JDK7與JDK8中的實(shí)現(xiàn)過(guò)程解析

    HashMap在JDK7與JDK8中的實(shí)現(xiàn)過(guò)程解析

    這幾天學(xué)習(xí)了HashMap的底層實(shí)現(xiàn),但是發(fā)現(xiàn)好幾個(gè)版本的,代碼不一,很多文章都是舊版本JDK1.6.JDK1.7的?,F(xiàn)在我來(lái)分析下JDK7與JDK8中HashMap的實(shí)現(xiàn)過(guò)程
    2021-09-09
  • maven安裝、使用、配置本地倉(cāng)庫(kù)、idea配置maven以及解決plugins報(bào)錯(cuò)問(wèn)題

    maven安裝、使用、配置本地倉(cāng)庫(kù)、idea配置maven以及解決plugins報(bào)錯(cuò)問(wèn)題

    本地倉(cāng)庫(kù)是遠(yuǎn)程倉(cāng)庫(kù)的一個(gè)緩沖和子集,當(dāng)你構(gòu)建Maven項(xiàng)目時(shí)首先會(huì)從本地倉(cāng)庫(kù)查找資源,如果沒(méi)有那么Maven會(huì)從遠(yuǎn)程倉(cāng)庫(kù)下載到你本地倉(cāng)庫(kù),這篇文章主要給大家介紹了關(guān)于maven安裝、使用、配置本地倉(cāng)庫(kù)、idea配置maven以及解決plugins報(bào)錯(cuò)問(wèn)題的相關(guān)資料,需要的朋友可以參考下
    2024-01-01

最新評(píng)論

新河县| 雷山县| 南通市| 南漳县| 五指山市| 武陟县| 安泽县| 芜湖市| 黔江区| 金川县| 华阴市| 郎溪县| 尉氏县| 新乐市| 深泽县| 高邑县| 达尔| 武汉市| 澄江县| 南充市| 都兰县| 克山县| 唐海县| 洛扎县| 若尔盖县| 绥德县| 曲麻莱县| 凯里市| 仁化县| 建阳市| 阿拉善盟| 麟游县| 衡阳市| 田林县| 乐业县| 蒲江县| 清河县| 高阳县| 阳西县| 沙雅县| 丽江市|