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

java ZipFile如何將多級目錄壓縮

 更新時間:2024年08月26日 09:18:29   作者:愛穿襯衫的張某某  
這篇文章主要介紹了java ZipFile如何將多級目錄壓縮問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教

java ZipFile將多級目錄壓縮

在 Java 中,可以使用 java.util.zip 包中的 ZipOutputStream 和 ZipEntry 類來壓縮多級目錄。

一個例子

展示如何遞歸地將一個目錄及其所有子目錄和文件壓縮到一個 ZIP 文件中:

import java.io.*;
import java.nio.file.*;
import java.util.zip.*;

public class ZipDirectory {
    public static void main(String[] args) throws IOException {
        String sourceDirPath = "path/to/source/directory";
        String zipFilePath = "path/to/output.zip";

        try (ZipOutputStream zipOut = new ZipOutputStream(new FileOutputStream(zipFilePath))) {
            Path sourceDir = Paths.get(sourceDirPath);
            Files.walk(sourceDir)
                 .filter(path -> !Files.isDirectory(path))
                 .forEach(path -> {
                      ZipEntry zipEntry = new ZipEntry(sourceDir.relativize(path).toString());
                      try {
                          zipOut.putNextEntry(zipEntry);
                          Files.copy(path, zipOut);
                          zipOut.closeEntry();
                      } catch (IOException e) {
                          System.err.println("Failed to add file to ZIP: " + path);
                          e.printStackTrace();
                      }
                 });
        }
    }
}

這個程序將遍歷指定目錄(包括子目錄)的所有文件,并將它們添加到 ZIP 文件中。

步驟解析

  • 使用 Files.walk 方法遞歸遍歷源目錄。
  • 對于每個非目錄文件,創(chuàng)建一個相對路徑的 ZipEntry。
  • 將文件內容復制到 ZipOutputStream。

請根據實際情況替換 sourceDirPath 和 zipFilePath。此外,請確保適當處理異常并關閉資源以避免資源泄漏。

Java多級目錄導出文件壓縮包

                //創(chuàng)建臨時文件
                File zipFile = File.createTempFile("test", ".zip");
                Path temp = Files.createTempDirectory(null);
                String srcImgPath = temp.toString();
 
                for( 循環(huán) ){
                     String outImgPath = srcImgPath + "/aa/bb/cc";
                     File outImgFile = new File(outImgPath);
                     //如果文件夾不存在則創(chuàng)建
                     if (!outImgFile.exists() && !outImgFile.isDirectory()) {
                            outImgFile.mkdirs();
                     }
                    FileOutputStream outImgStream = new FileOutputStream(outImgPath + "/" + name);
                    ImageIO.write(bufImg, imgSuffix, outImgStream);
                    outImgStream.flush();
                    outImgStream.close();
                }
 
                ZipUtil.zip(srcImgPath, zipFile.getAbsolutePath(), true);
 
                String header = request.getHeader("User-Agent").toUpperCase();
                String fileName = "附件信息" + System.currentTimeMillis() + ".zip";
                if (header.contains("MSIE") || header.contains("TRIDENT") || header.contains("EDGE")) {
                    fileName = URLEncoder.encode(fileName, "utf-8");
                    //IE下載文件名空格變+號問題
                    fileName = fileName.replace("+", "%20");
                } else {
                    fileName = new String(fileName.getBytes(), "ISO8859-1");
                }
                response.reset();
                response.setContentType("text/plain");
                response.setContentType("application/octet-stream; charset=utf-8");
                response.setHeader("Location", fileName);
                response.setHeader("Cache-Control", "max-age=0");
                response.setHeader("Content-Disposition", "attachment; filename=" + fileName);
 
                FileInputStream fis = new FileInputStream(zipFile);
                BufferedInputStream buff = new BufferedInputStream(fis);
                BufferedOutputStream out = new BufferedOutputStream(response.getOutputStream());
                byte[] car = new byte[1024];
                int l = 0;
                while (l < zipFile.length()) {
                    int j = buff.read(car, 0, 1024);
                    l += j;
                    out.write(car, 0, j);
                }
                // 關閉流
                fis.close();
                buff.close();
                out.close();
                // 刪除臨時文件
                zipFile.delete();
                FileUtil.deleteDir(srcImgPath);

總結

以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

  • Spring的InitializingBean接口解析

    Spring的InitializingBean接口解析

    這篇文章主要介紹了Spring的InitializingBean接口解析,InitializingBean是spring為bean的初始化提供了一種新的方式,里面只有一個方法afterPropertiesSet,作用就是實現(xiàn)這個接口或者實現(xiàn)了繼承InitializingBean的方法的bean都要執(zhí)行這個方法,需要的朋友可以參考下
    2024-02-02
  • 基于注解的springboot+mybatis的多數據源組件的實現(xiàn)代碼

    基于注解的springboot+mybatis的多數據源組件的實現(xiàn)代碼

    這篇文章主要介紹了基于注解的springboot+mybatis的多數據源組件的實現(xiàn),會使用到多個數據源,文中通過代碼講解的非常詳細,需要的朋友可以參考下
    2021-04-04
  • Java 多線程實例詳解(二)

    Java 多線程實例詳解(二)

    本文主要介紹Java 多線程的資料整理,這里整理了詳細資料及相關示例代碼,有興趣的小伙伴可以參考下
    2016-09-09
  • 關于Java中阻塞隊列BlockingQueue的詳解

    關于Java中阻塞隊列BlockingQueue的詳解

    這篇文章主要介紹了關于Java中阻塞隊列BlockingQueue的詳解,BlockingQueue是為了解決多線程中數據高效安全傳輸而提出的,從阻塞這個詞可以看出,在某些情況下對阻塞隊列的訪問可能會造成阻塞,需要的朋友可以參考下
    2023-05-05
  • Spring Boot Admin的使用詳解(Actuator監(jiān)控接口)

    Spring Boot Admin的使用詳解(Actuator監(jiān)控接口)

    這篇文章主要介紹了Spring Boot Admin的使用詳解(Actuator監(jiān)控接口),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-05-05
  • Java中IO流解析及代碼實例

    Java中IO流解析及代碼實例

    下面小編就為大家?guī)硪黄P于Java中的IO流總結(推薦)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2021-07-07
  • Java中調用DLL動態(tài)庫的操作方法

    Java中調用DLL動態(tài)庫的操作方法

    在Java編程中,有時我們需要調用本地代碼庫,特別是Windows平臺上的DLL(動態(tài)鏈接庫),本文中,我們將詳細討論如何在Java中加載和調用DLL動態(tài)庫,并通過具體示例來展示這個過程,感興趣的朋友跟隨小編一起看看吧
    2024-03-03
  • 探討Java語言中那些修飾符

    探討Java語言中那些修飾符

    在java中常見的修飾符有:abstract(抽象的)、static(靜態(tài)的)、public(公共的)、protected(受保護的)、private(私有的)、synchronized(同步的)、native(本地的)、transient(暫時的)、volatile(易失的)、final(不可改變的)。對java語言修飾符感興趣的朋友一起看看吧
    2016-11-11
  • Java判斷一個字符串是不是一個數字的解決思路

    Java判斷一個字符串是不是一個數字的解決思路

    這篇文章主要給大家介紹了關于Java判斷一個字符串是不是一個數字的解決思路,判斷一個字符串是否為數字是Java開發(fā)中很常見的業(yè)務需求,實現(xiàn)這個判斷有很多種方式,需要的朋友可以參考下
    2023-08-08
  • Java讀取或刪除Excel文件文檔屬性的解決方案

    Java讀取或刪除Excel文件文檔屬性的解決方案

    Excel文件不僅僅是數據表格,它們還承載著重要的元數據,即文檔屬性,這些屬性在文件管理、信息溯源和數據合規(guī)性方面扮演著關鍵角色,本文將深入探討如何利用功能強大的Spire.XLS for Java庫,輕松實現(xiàn)Excel文檔屬性的讀寫與刪除操作,需要的朋友可以參考下
    2025-12-12

最新評論

芜湖市| 中方县| 永泰县| 闽侯县| 富民县| 义马市| 夏邑县| 惠东县| 闽清县| 凤山县| 绵竹市| 即墨市| 遵义县| 陆川县| 横峰县| 平阴县| 怀来县| 漳州市| 松阳县| 大宁县| 印江| 高唐县| 淄博市| 游戏| 阳东县| 开封县| 读书| 凤冈县| 江西省| 连云港市| 林西县| 仁布县| 郓城县| 延长县| 平舆县| 扶风县| 广德县| 石河子市| 社旗县| 松潘县| 商都县|