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

Java實現(xiàn)導出ZIP壓縮包的方法

 更新時間:2020年11月02日 11:37:30   作者:溪~源  
這篇文章主要介紹了Java實現(xiàn)導出ZIP壓縮包的方法,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下

最近接觸到一個需求要求壓縮導出文件,于是乎便要致力于研究一下工具類啦,故也誕生了此篇文章。
下面代碼中,溪源也將import導入的依賴也貼出來了,避免大家引入錯誤。

import org.apache.commons.io.FileUtils;
import org.apache.commons.io.IOUtils;

import javax.servlet.http.HttpServletResponse;
import java.io.*;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;

/**
 * @author wx
 * @date 2020/10/29 5:19 下午
 */
public class FileZipUtil {

  private static void handlerFile(ZipOutputStream zip, File file, String dir) throws Exception {
    //如果當前的是文件夾,則進行進一步處理
    if (file.isDirectory()) {
      //得到文件列表信息
      File[] fileArray = file.listFiles();
      if (fileArray == null) {
        return;
      }
      //將文件夾添加到下一級打包目錄
      zip.putNextEntry(new ZipEntry(dir + "/"));
      dir = dir.length() == 0 ? "" : dir + "/";
      //遞歸將文件夾中的文件打包
      for (File f : fileArray) {
        handlerFile(zip, f, dir + f.getName());
      }
    } else {
      //當前的是文件,打包處理
      //文件輸入流
      BufferedInputStream bis = new BufferedInputStream(new FileInputStream(file));
      ZipEntry entry = new ZipEntry(dir);
      zip.putNextEntry(entry);
      zip.write(FileUtils.readFileToByteArray(file));
      IOUtils.closeQuietly(bis);
      zip.flush();
      zip.closeEntry();
    }
  }

  private static byte[] createZip(String sourceFilePath) throws Exception{
    ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
    ZipOutputStream zip = new ZipOutputStream(outputStream);
    //將目標文件打包成zip導出
    File file = new File(sourceFilePath);
    handlerFile(zip, file,"");
    IOUtils.closeQuietly(zip);
    return outputStream.toByteArray();
  }


  public static void exportZip(HttpServletResponse response, String sourceFilePath) {
  //文件名以時間戳作為前綴
    SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss");
    String filePrefix = sdf.format(new Date());
    String downloadName = filePrefix + ".zip";
    //將文件進行打包下載
    try {
      OutputStream out = response.getOutputStream();
      //接收壓縮包字節(jié)
      byte[] data = createZip(sourceFilePath);
      response.reset();
      response.addHeader("Access-Control-Allow-Origin", "*");
      response.setHeader("Access-Control-Expose-Headers", "*");
      response.setHeader("Content-disposition", "attachment;filename*=utf-8''" + downloadName);
      response.addHeader("Content-Length", "" + data.length);
      response.setContentType("application/octet-stream;charset=UTF-8");
      IOUtils.write(data, out);
      out.flush();
      out.close();
    } catch (Exception e) {
      e.printStackTrace();
    }
  }
}

客戶端調用方法:

 @GetMapping("/exportFile")
  public Result exportFile(HttpServletResponse response) {
    //第二個參數(shù)為:要壓縮文件的地址
    FileZipUtil.exportZip(response, "/Users/Downloads");
  }

到此這篇關于Java實現(xiàn)導出ZIP壓縮包的方法的文章就介紹到這了,更多相關Java導出ZIP壓縮包內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • Java程序中實現(xiàn)調用Python腳本的方法詳解

    Java程序中實現(xiàn)調用Python腳本的方法詳解

    這篇文章主要介紹了Java程序中實現(xiàn)調用Python腳本的方法,結合實例形式分析了eclipse環(huán)境中使用Java調用Python腳本的相關操作技巧與注意事項,需要的朋友可以參考下
    2018-03-03
  • Java使用異常鏈傳遞錯誤信息的詳細指南

    Java使用異常鏈傳遞錯誤信息的詳細指南

    作為一名Java開發(fā)者,相信你一定見過各種奇奇怪怪的異常報錯,但有沒有遇到過這樣的情況:明明只調用了一個方法,卻看到異常信息像俄羅斯套娃一樣一層層展開?所以本文給大家介紹了Java異常鏈(Exception Chaining)機制,需要的朋友可以參考下
    2025-09-09
  • Java使用java -jar啟動并按日分包日志的最佳實踐

    Java使用java -jar啟動并按日分包日志的最佳實踐

    在生產(chǎn)環(huán)境中,Java應用程序通常以java -jar方式運行,而日志管理是運維的重要部分,如果日志文件過大,不僅影響性能,還會增加排查問題的難度,因此,按日分包日志成為常見的需求,本文將介紹4種實現(xiàn)方式,并提供詳細配置和代碼示例,需要的朋友可以參考下
    2025-07-07
  • JVM執(zhí)行引擎和垃圾回收要點總結

    JVM執(zhí)行引擎和垃圾回收要點總結

    不論是在問題現(xiàn)場還是跳槽面試,我們面對JVM性能問題,依舊會束手無辭,它需要你對Java虛擬機的實現(xiàn)和優(yōu)化,有極為深刻的理解。所以我在這里整理了一下 JVM的知識點。今天說說虛擬機執(zhí)行引擎和垃圾回收,都是十足的干貨,請各位看官耐心批閱!
    2021-06-06
  • Java(enum)枚舉用法詳解

    Java(enum)枚舉用法詳解

    本篇文章主要介紹了Java 枚舉用法詳解,枚舉的好處:可以將常量組織起來,統(tǒng)一進行管理。有興趣的可以一起來了解一下。
    2016-11-11
  • Activiti進階之組任務實現(xiàn)示例詳解

    Activiti進階之組任務實現(xiàn)示例詳解

    這篇文章主要為大家介紹了Activiti進階之組任務實現(xiàn)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-08-08
  • java實現(xiàn)題目以及選項亂序的方法實例

    java實現(xiàn)題目以及選項亂序的方法實例

    這篇文章主要給大家介紹了關于java實現(xiàn)題目以及選項亂序的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-03-03
  • 對數(shù)據(jù)進行分頁顯示到table中的實現(xiàn)方法

    對數(shù)據(jù)進行分頁顯示到table中的實現(xiàn)方法

    這篇文章主要介紹了對數(shù)據(jù)進行分頁顯示到table中的實現(xiàn)方法的相關資料,非常不錯,具有參考借鑒價值,需要的朋友可以參考下
    2016-05-05
  • SpringBoot異常: nested exception is java.lang.NoClassDefFoundError: javax/servlet/ServletContext解決方案

    SpringBoot異常: nested exception is java.lang.NoClassDefFoundE

    這篇文章主要介紹了SpringBoot異常: nested exception is java.lang.NoClassDefFoundError: javax/servlet/ServletContext解決方案,說明了錯誤原因和解決方案,需要的朋友可以參考下
    2021-06-06
  • springboot配置https安全連接的方法

    springboot配置https安全連接的方法

    這篇文章主要介紹了springboot配置https安全連接的方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-01-01

最新評論