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

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

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

相關(guān)文章

最新評(píng)論

建阳市| 鄂托克旗| 天峻县| 辽源市| 格尔木市| 黔东| 任丘市| 昆山市| 盐山县| 宁夏| 招远市| 安徽省| 兴义市| 禹城市| 曲沃县| 西安市| 独山县| 靖安县| 含山县| 遵义县| 盐城市| 岳阳县| 罗甸县| 南投县| 普定县| 手游| 白玉县| 肃北| 鹿泉市| 于田县| 广汉市| 郴州市| 新乡市| 顺昌县| 友谊县| 鄂尔多斯市| 平顶山市| 井研县| 云梦县| 项城市| 辉南县|