欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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文件(無(wú)需創(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.測(cè)試

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)容感興趣的讀者可查看本站專(zhuān)題:《Java文件與目錄操作技巧匯總》、《Java數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Java操作DOM節(jié)點(diǎn)技巧總結(jié)》和《Java緩存操作技巧匯總

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

相關(guān)文章

  • Java中的?stop?the?world是什么呢

    Java中的?stop?the?world是什么呢

    這篇文章主要介紹了Java中的stop?the?world是什么呢,從字面上講,就是停止這個(gè)世界,看到這個(gè)字眼,就覺(jué)得這是可怕的事情,那到底什么是stop-the-world,本文給大家詳細(xì)講解,感興趣的朋友跟隨小編一起看看吧
    2023-05-05
  • Springboot整合minio實(shí)現(xiàn)文件服務(wù)的教程詳解

    Springboot整合minio實(shí)現(xiàn)文件服務(wù)的教程詳解

    這篇文章主要介紹了Springboot整合minio實(shí)現(xiàn)文件服務(wù)的教程,文中的示例代碼講解詳細(xì),對(duì)我們的工作或?qū)W習(xí)有一定幫助,需要的可以參考一下
    2022-06-06
  • java實(shí)現(xiàn)順序結(jié)構(gòu)線性列表的函數(shù)代碼

    java實(shí)現(xiàn)順序結(jié)構(gòu)線性列表的函數(shù)代碼

    java實(shí)現(xiàn)順序結(jié)構(gòu)線性列表的函數(shù)代碼。需要的朋友可以過(guò)來(lái)參考下,希望對(duì)大家有所幫助
    2013-10-10
  • SpringCloud集成Eureka并實(shí)現(xiàn)負(fù)載均衡的過(guò)程詳解

    SpringCloud集成Eureka并實(shí)現(xiàn)負(fù)載均衡的過(guò)程詳解

    這篇文章主要給大家詳細(xì)介紹了SpringCloud集成Eureka并實(shí)現(xiàn)負(fù)載均衡的過(guò)程,文章通過(guò)代碼示例和圖文講解的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作有一定的參考價(jià)值,需要的朋友可以參考下
    2023-11-11
  • SpringMVC中常用參數(shù)校驗(yàn)類(lèi)注解使用示例教程

    SpringMVC中常用參數(shù)校驗(yàn)類(lèi)注解使用示例教程

    這篇文章主要介紹了SpringMVC中常用參數(shù)校驗(yàn)類(lèi)注解使用示例教程,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-03-03
  • Java使用CompletableFuture實(shí)現(xiàn)異步編程

    Java使用CompletableFuture實(shí)現(xiàn)異步編程

    在現(xiàn)代 Java 開(kāi)發(fā)中,異步編程是一項(xiàng)重要技能,而 CompletableFuture 是從 Java 8 開(kāi)始提供的一個(gè)功能強(qiáng)大的工具,用于簡(jiǎn)化異步任務(wù)的編寫(xiě)和組合,本文將詳細(xì)介紹 CompletableFuture 的基本使用和一些常見(jiàn)的應(yīng)用場(chǎng)景,需要的朋友可以參考下
    2025-01-01
  • JMM核心概念之Happens-before原則

    JMM核心概念之Happens-before原則

    關(guān)于Java并發(fā)的通信機(jī)制是基于共享內(nèi)存實(shí)現(xiàn)的,線程之間共享程序的公共狀態(tài),通過(guò)寫(xiě)-讀內(nèi)存中的公共狀態(tài)進(jìn)行隱式通信,這對(duì)程序員是透明的,我們需要理解其工作機(jī)制,以防止內(nèi)存可見(jiàn)性問(wèn)題,從而編寫(xiě)出正確同步的代碼
    2021-06-06
  • rabbitmq消息ACK確認(rèn)機(jī)制及發(fā)送失敗處理方式

    rabbitmq消息ACK確認(rèn)機(jī)制及發(fā)送失敗處理方式

    這篇文章主要介紹了rabbitmq消息ACK確認(rèn)機(jī)制及發(fā)送失敗處理方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-12-12
  • struts1之簡(jiǎn)單mvc示例_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理

    struts1之簡(jiǎn)單mvc示例_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理

    這篇文章主要介紹了struts1之簡(jiǎn)單mvc示例的相關(guān)資料,需要的朋友可以參考下
    2017-09-09
  • nacos客戶(hù)端一致性hash負(fù)載需求實(shí)現(xiàn)

    nacos客戶(hù)端一致性hash負(fù)載需求實(shí)現(xiàn)

    這篇文章主要介紹了nacos客戶(hù)端一致性hash負(fù)載的需求實(shí)現(xiàn)過(guò)程及步驟詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步
    2022-02-02

最新評(píng)論