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

Java使用Apache compress實現(xiàn)文件夾壓縮成Zip包

 更新時間:2024年01月14日 10:30:34   作者:醬油何在  
Apache common提供了很多實用的工具包,這篇文章主要來和大家介紹一下Java如何使用Apache compress包實現(xiàn)文件夾壓縮成Zip包,希望對大家有所幫助

Apache common提供了很多實用的工具包,下面就說一下如何用compress包來壓縮文件夾。先引入compress,io和lang3這3個工具包:

 <dependencies>
        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-compress</artifactId>
            <version>1.9</version>
        </dependency>
 
        <dependency>
            <groupId>commons-io</groupId>
            <artifactId>commons-io</artifactId>
            <version>2.4</version>
        </dependency>
 
        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-lang3</artifactId>
            <version>3.8</version>
        </dependency>
    </dependencies>

這個方法實現(xiàn)了將文件夾下所有的文件壓縮成zip包,并輸出到文件流中,可以直接寫入到文件或提供給前端下載,工具類如下:

import org.apache.commons.compress.archivers.ArchiveException;
import org.apache.commons.compress.archivers.ArchiveStreamFactory;
import org.apache.commons.compress.archivers.zip.Zip64Mode;
import org.apache.commons.compress.archivers.zip.ZipArchiveEntry;
import org.apache.commons.compress.archivers.zip.ZipArchiveOutputStream;
import org.apache.commons.io.FileUtils;
import org.apache.commons.io.IOUtils;
import org.apache.commons.io.filefilter.TrueFileFilter;
import org.apache.commons.lang3.StringUtils;
 
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.Collection;
 
public class ZipUtils {
 
    /**
     * 壓縮文件夾下的所有文件
     * @param dir          要壓縮的文件夾
     * @param outputStream 輸出壓縮后的文件流
     * @throws IOException      IO異常
     * @throws ArchiveException 壓縮異常
     */
    public static void zip(File dir, OutputStream outputStream) throws IOException, ArchiveException {
        ZipArchiveOutputStream zipOutput = null;
        try {
            zipOutput = (ZipArchiveOutputStream) new ArchiveStreamFactory()
                    .createArchiveOutputStream(ArchiveStreamFactory.ZIP, outputStream);
            zipOutput.setEncoding("utf-8");
            zipOutput.setUseZip64(Zip64Mode.AsNeeded);
            Collection<File> files = FileUtils.listFilesAndDirs(dir, TrueFileFilter.INSTANCE, TrueFileFilter.INSTANCE);
 
            for (File file : files) {
                InputStream in = null;
                try {
                    if (file.getPath().equals(dir.getPath())) {
                        continue;
                    }
                    String relativePath = StringUtils.replace(file.getPath(), dir.getPath() + File.separator, "");
                    ZipArchiveEntry entry = new ZipArchiveEntry(file, relativePath);
                    zipOutput.putArchiveEntry(entry);
                    if (file.isDirectory()) {
                        zipOutput.closeArchiveEntry();
                        continue;
                    }
 
                    in = new FileInputStream(file);
                    IOUtils.copy(in, zipOutput);
                    zipOutput.closeArchiveEntry();
                } finally {
                    if (in != null) {
                        IOUtils.closeQuietly(in);
                    }
                }
            }
            zipOutput.finish();
        } finally {
            IOUtils.closeQuietly(zipOutput);
        }
    }
 
    public static void main(String args[]) throws IOException, ArchiveException {
        //要壓縮的文件路徑
        File dir = new File("C:\\data\\data");
        //壓縮后zip包文件路徑
        File dest = new File("C:\\data\\test.zip");
        OutputStream outputStream = new FileOutputStream(dest);
        zip(dir, outputStream);
    }
}

執(zhí)行main函數(shù)跑測試用例,發(fā)現(xiàn)程序?qū)ir路徑下的所有文件已經(jīng)壓縮并輸出zip包。

到此這篇關(guān)于Java使用Apache compress實現(xiàn)文件夾壓縮成Zip包的文章就介紹到這了,更多相關(guān)Java文件夾壓縮成Zip內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • SpringCloud如何利用Feign訪問外部http請求

    SpringCloud如何利用Feign訪問外部http請求

    這篇文章主要介紹了SpringCloud如何利用Feign訪問外部http請求,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-03-03
  • Java中SimpleDateFormat方法超詳細分析

    Java中SimpleDateFormat方法超詳細分析

    這篇文章主要給大家介紹了關(guān)于Java中SimpleDateFormat方法超詳細分析的相關(guān)資料,SimpleDateFormat 是一個以國別敏感的方式格式化和分析數(shù)據(jù)的具體類,文中通過代碼介紹的非常詳細,需要的朋友可以參考下
    2023-08-08
  • Spring Security 實現(xiàn)用戶名密碼登錄流程源碼詳解

    Spring Security 實現(xiàn)用戶名密碼登錄流程源碼詳解

    在服務端的安全管理使用了Spring Security,用戶登錄成功之后,Spring Security幫你把用戶信息保存在Session里,但是具體保存在哪里,要是不深究你可能就不知道,今天小編就帶大家具體了解一下Spring Security實現(xiàn)用戶名密碼登錄的流程
    2021-11-11
  • FastJson時間格式化問題避坑經(jīng)驗分享

    FastJson時間格式化問題避坑經(jīng)驗分享

    這篇文章主要為大家介紹了FastJson時間格式化問題避坑經(jīng)驗分享,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-08-08
  • 深入講解Java中的多態(tài)和抽象類

    深入講解Java中的多態(tài)和抽象類

    這篇文章主要介紹了深入講解Java中的多態(tài)和抽象類,有時候,設(shè)計一個數(shù)組或方法的參數(shù),返回值類型時,無法確定具體的類型,只能確定是某個系列的類型,這時就引入了多態(tài),需要的朋友可以參考下
    2023-08-08
  • Java 基于UDP協(xié)議實現(xiàn)消息發(fā)送

    Java 基于UDP協(xié)議實現(xiàn)消息發(fā)送

    這篇文章主要介紹了Java 基于UDP協(xié)議實現(xiàn)消息發(fā)送,幫助大家更好的理解和學習Java網(wǎng)絡(luò)編程,感興趣的朋友可以了解下
    2020-11-11
  • 使用java?實現(xiàn)mqtt兩種常用方式

    使用java?實現(xiàn)mqtt兩種常用方式

    在開發(fā)MQTT時有兩種方式一種是使用Paho Java 原生庫來完成,一種是使用spring boot 來完成,這篇文章主要介紹了使用java?實現(xiàn)mqtt兩種方式,需要的朋友可以參考下
    2022-11-11
  • SpringCloud?Gateway?DispatcherHandler調(diào)用方法詳細介紹

    SpringCloud?Gateway?DispatcherHandler調(diào)用方法詳細介紹

    我們第一個關(guān)注的類就是DispatcherHandler,這個類提供的handle()方法,封裝了我們之后所有的handlerMappings,這個DispatcherHandler有點想SpringMVC的DispatchServlet,里面也是封裝了請求和對應的處理方法的關(guān)系
    2022-10-10
  • Java異常監(jiān)控(監(jiān)控利器)

    Java異常監(jiān)控(監(jiān)控利器)

    這篇文章給大家介紹Java異常監(jiān)控(監(jiān)控利器)的相關(guān)知識,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友參考下吧
    2026-03-03
  • SpringBoot中的6種API請求參數(shù)讀取方式總結(jié)

    SpringBoot中的6種API請求參數(shù)讀取方式總結(jié)

    使用Spring Boot開發(fā)API的時候,讀取請求參數(shù)是服務端編碼中最基本的一項操作,Spring Boot中也提供了多種機制來滿足不同的API設(shè)計要求,通過本文,為大家總結(jié)6種常用的請求參數(shù)讀取方式,需要的朋友可以參考下
    2024-07-07

最新評論

信阳市| 正定县| 雅安市| 昭通市| 丰县| 东台市| 郎溪县| 广丰县| 邳州市| 西乌| 丘北县| 济南市| 乌鲁木齐市| 巢湖市| 太仆寺旗| 大方县| 汶上县| 天峻县| 象山县| 苍山县| 宁明县| 恩平市| 聂荣县| 桓台县| 无极县| 惠州市| 广平县| 墨竹工卡县| 增城市| 咸丰县| 通道| 张北县| 额尔古纳市| 千阳县| 洪雅县| 阿合奇县| 黄浦区| 梁平县| 大荔县| 云梦县| 彩票|