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

java實(shí)現(xiàn)一次性壓縮多個(gè)文件到zip中的方法示例

 更新時(shí)間:2019年09月02日 10:02:34   作者:yqwang75457  
這篇文章主要介紹了java實(shí)現(xiàn)一次性壓縮多個(gè)文件到zip中的方法,涉及java針對(duì)文件批量壓縮相關(guān)的文件判斷、遍歷、壓縮等操作技巧,需要的朋友可以參考下

本文實(shí)例講述了java實(shí)現(xiàn)一次性壓縮多個(gè)文件到zip中的方法。分享給大家供大家參考,具體如下:

1.需要引入包:

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;
import org.springframework.util.StringUtils;

2.代碼

/**
* @Title: compress
* @Description: TODO
* @param filePaths 需要壓縮的文件地址列表(絕對(duì)路徑)
* @param zipFilePath 需要壓縮到哪個(gè)zip文件(無需創(chuàng)建這樣一個(gè)zip,只需要指定一個(gè)全路徑)
* @param keepDirStructure 壓縮后目錄是否保持原目錄結(jié)構(gòu)
* @throws IOException
* @return int  壓縮成功的文件個(gè)數(shù)
*/
public static int compress(List<String> filePaths, String zipFilePath,Boolean keepDirStructure) throws IOException{
     byte[] buf = new byte[1024];
     File zipFile = new File(zipFilePath);
     //zip文件不存在,則創(chuàng)建文件,用于壓縮
     if(!zipFile.exists())
       zipFile.createNewFile();
     int fileCount = 0;//記錄壓縮了幾個(gè)文件?
     try {
       ZipOutputStream zos = new ZipOutputStream(new FileOutputStream(zipFile));
       for(int i = 0; i < filePaths.size(); i++){
         String relativePath = filePaths.get(i);
         if(StringUtils.isEmpty(relativePath)){
           continue;
         }
         File sourceFile = new File(relativePath);//絕對(duì)路徑找到file
         if(sourceFile == null || !sourceFile.exists()){
           continue;
         }
         FileInputStream fis = new FileInputStream(sourceFile);
         if(keepDirStructure!=null && keepDirStructure){
           //保持目錄結(jié)構(gòu)
           zos.putNextEntry(new ZipEntry(relativePath));
         }else{
           //直接放到壓縮包的根目錄
           zos.putNextEntry(new ZipEntry(sourceFile.getName()));
         }
         //System.out.println("壓縮當(dāng)前文件:"+sourceFile.getName());
         int len;
         while((len = fis.read(buf)) > 0){
           zos.write(buf, 0, len);
         }
         zos.closeEntry();
         fis.close();
         fileCount++;
       }
       zos.close();
       //System.out.println("壓縮完成");
     } catch (Exception e) {
       e.printStackTrace();
     }
     return fileCount;
}

3.測試

public static void main(String[] args) throws IOException {
     List<String> sourceFilePaths = new ArrayList<String>();
     sourceFilePaths.add("d:/test/C08065.jpg");
     sourceFilePaths.add("d:/test/新建文件夾/C08984.jpg");
     sourceFilePaths.add("d:/test/找不到我.jpg");//試一個(gè)找不到的文件
     //指定打包到哪個(gè)zip(絕對(duì)路徑)
     String zipTempFilePath = "D:/test/test.zip";
     //調(diào)用壓縮
     int s = compress(sourceFilePaths, zipTempFilePath,false);
     System.out.println("成功壓縮"+s+"個(gè)文件");
}

更多關(guān)于java算法相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Java文件與目錄操作技巧匯總》、《Java數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Java操作DOM節(jié)點(diǎn)技巧總結(jié)》和《Java緩存操作技巧匯總

希望本文所述對(duì)大家java程序設(shè)計(jì)有所幫助。

相關(guān)文章

  • Java線程同步Lock同步鎖代碼示例

    Java線程同步Lock同步鎖代碼示例

    這篇文章主要介紹了Java線程同步Lock同步鎖代碼示例,首先介紹了Java線程同步的原理,然后對(duì)lock同步鎖作了簡要闡述,分享了代碼示例,具有一定參考價(jià)值,需要的朋友可以了解下。
    2017-11-11
  • 詳解Spring Boot工程集成全局唯一ID生成器 UidGenerator的操作步驟

    詳解Spring Boot工程集成全局唯一ID生成器 UidGenerator的操作步驟

    本文就在項(xiàng)目中來集成 UidGenerator這一工程來作為項(xiàng)目的全局唯一 ID生成器。接下來通過實(shí)例代碼給大家詳解詳解Spring Boot工程集成全局唯一ID生成器 UidGenerator的操作步驟,感興趣的朋友一起看看吧
    2018-10-10
  • 最全總結(jié)SpringBean的作用域管理

    最全總結(jié)SpringBean的作用域管理

    今天給大家詳細(xì)總結(jié)了SpringBean的作用域管理,文中有非常詳細(xì)的圖文介紹以及代碼示例,對(duì)正在學(xué)習(xí)java的小伙伴們還很有幫助,需要的朋友可以參考下
    2021-05-05
  • Java從ftp服務(wù)器上傳與下載文件的實(shí)現(xiàn)

    Java從ftp服務(wù)器上傳與下載文件的實(shí)現(xiàn)

    這篇文章主要給大家介紹了關(guān)于Java從ftp服務(wù)器上傳與下載文件的實(shí)現(xiàn)方法,最近項(xiàng)目中需要實(shí)現(xiàn)將文件先存放到ftp上,需要的時(shí)候再從ftp上下載,做的過程中碰到了問題,所以這里總結(jié)下,需要的朋友可以參考下
    2023-08-08
  • Spring中的@RestControllerAdvice注解使用解析

    Spring中的@RestControllerAdvice注解使用解析

    這篇文章主要介紹了Spring中的@RestControllerAdvice注解使用解析,@RestControllerAdvice?是?Spring?框架中一個(gè)用于統(tǒng)一處理控制器異常和返回結(jié)果的注解,它可以被用來定義全局異常處理程序和全局響應(yīng)結(jié)果處理程序,需要的朋友可以參考下
    2024-01-01
  • SpringMVC HttpMessageConverter消息轉(zhuǎn)換器

    SpringMVC HttpMessageConverter消息轉(zhuǎn)換器

    ??HttpMessageConverter???,報(bào)文信息轉(zhuǎn)換器,將請求報(bào)文轉(zhuǎn)換為Java對(duì)象,或?qū)ava對(duì)象轉(zhuǎn)換為響應(yīng)報(bào)文。???HttpMessageConverter???提供了兩個(gè)注解和兩個(gè)類型:??@RequestBody,@ResponseBody???,??RequestEntity,ResponseEntity??
    2023-04-04
  • Springboot跨域CORS處理實(shí)現(xiàn)原理

    Springboot跨域CORS處理實(shí)現(xiàn)原理

    這篇文章主要介紹了Springboot跨域CORS處理實(shí)現(xiàn)原理,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-04-04
  • kafka 啟動(dòng)報(bào)錯(cuò) missingTopicsFatal is true的解決

    kafka 啟動(dòng)報(bào)錯(cuò) missingTopicsFatal is true的解決

    這篇文章主要介紹了kafka 啟動(dòng)報(bào)錯(cuò) missingTopicsFatal is true的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-07-07
  • Java 8新特性 內(nèi)建函數(shù)式接口詳解

    Java 8新特性 內(nèi)建函數(shù)式接口詳解

    這篇文章主要介紹了Java 8新特性 內(nèi)建函數(shù)式接口詳解的相關(guān)資料,這里主要介紹4個(gè)基本函數(shù)式接口,需要的朋友可以參考下
    2016-12-12
  • spring boot 默認(rèn)異常處理的實(shí)現(xiàn)

    spring boot 默認(rèn)異常處理的實(shí)現(xiàn)

    這篇文章主要介紹了spring boot 默認(rèn)異常處理的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-04-04

最新評(píng)論