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

Java如何生成壓縮文件工具類

 更新時(shí)間:2024年06月14日 16:10:48   作者:code_now  
這篇文章主要介紹了Java如何生成壓縮文件工具類問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

Java生成壓縮文件工具類

文件壓縮功能在日常項(xiàng)目中經(jīng)常會(huì)使用到,例如文件太多,需要發(fā)送給用戶,這時(shí)就需要將多個(gè)文件壓縮成一個(gè)壓縮包,然后再通過郵件或其它方式發(fā)送給用戶;

在這里給大家提供一種生成zip文件壓縮工具類,并附帶測(cè)試代碼。

測(cè)試代碼目錄結(jié)構(gòu)

文件壓縮核心工具類

主要有三個(gè)入?yún)ⅲ?/strong>

  • List fileList:存放所有壓縮源文件的集合
  • File zipFile:壓縮后的文件
  • Map<String, String> myMap:key-文件壓縮前名稱,value-文件壓縮后在壓縮包中的名稱
package com.bbu.utils;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.List;
import java.util.Map;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;

/**
 * 文件壓縮工具類
 * 
 * @author code_now
 */
public class ZipUtils {
	
	/**
	 * 生成壓縮文件
	 * @param fileList	存放所有壓縮源文件
	 * @param zipFile	壓縮后文件
	 * @param myMap	key-文件壓縮前名稱,value-文件壓縮后在壓縮包中的名稱
	 * @throws Exception
	 */
	public static void createFileZip(List<File> fileList, File zipFile, Map<String, String> myMap) throws Exception{
		if(fileList.size()>0){
			byte[] buf = new byte[1024];
			try {
				ZipOutputStream out = new ZipOutputStream(new FileOutputStream(zipFile));
				for(File file:fileList){
					FileInputStream in = new FileInputStream(file);  
					out.putNextEntry(new ZipEntry((String) myMap.get(file.getName())));
					int len;  
					while ((len = in.read(buf)) > 0) {  
						out.write(buf, 0, len);  
					}  
					out.closeEntry();  
					in.close();
					file.delete();// 寫進(jìn)壓縮文件后,刪除臨時(shí)目錄中的源文件
				}
				out.close();
			} catch (IOException e) {
				throw new Exception("文件壓縮失敗!" + e.getMessage());
			}  
		}
	}
}

測(cè)試代碼

package com.bbu.test;

import java.io.File;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.junit.Test;

import com.bbu.utils.ZipUtils;

public class TestCreateZip {
	
	Log logger = LogFactory.getLog(getClass());
	
	@Test
	public void createZipTest() {
		
		// 源文件存儲(chǔ)路徑
		String srcPath = this.getClass().getClassLoader().getResource("").getPath();
		// 壓縮包存儲(chǔ)路徑
		String desPath = "D:/zipfile/";
		// 用于臨時(shí)存放所有的壓縮文件
		List<File> fileList = new ArrayList<File>();
		// key-文件壓縮前名稱,value-文件壓縮后在壓縮包中的名稱
		Map<String,String> myMpa = new HashMap<String,String>();
		
		// 放入文件test.pdf
		String testPdf = srcPath + "test.pdf";
		File testPdfFile =new File(testPdf); 
		myMpa.put(testPdfFile.getName(), "newName.pdf"); 
		fileList.add(testPdfFile);
		// 放入文件test.docx
		String testDocx = srcPath + "test.docx"; 
		File testDocxFile =new File(testDocx);  
		myMpa.put(testDocxFile.getName(), "newName.docx"); 
 		fileList.add(testDocxFile);
 		
		// 生成壓縮包zip文件
		File zipFile = new File(desPath + File.separator+System.currentTimeMillis()+".zip");
		logger.info(zipFile);// 打印壓縮包文件全路徑
		
		try {
			// 調(diào)用壓縮工具進(jìn)行壓縮
			ZipUtils.createFileZip(fileList, zipFile, myMpa);
			logger.info("壓縮成功!");
		} catch (Exception e) {
			logger.info("壓縮失?。?, e);
		}
	}
}

測(cè)試結(jié)果

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Apache POI將PPT轉(zhuǎn)換成圖片實(shí)例代碼

    Apache POI將PPT轉(zhuǎn)換成圖片實(shí)例代碼

    這篇文章主要介紹了Apache POI將PPT轉(zhuǎn)換成圖片實(shí)例代碼,具有一定借鑒價(jià)值,需要的朋友可以參考下
    2018-01-01
  • 統(tǒng)一返回JsonResult踩坑的記錄

    統(tǒng)一返回JsonResult踩坑的記錄

    這篇文章主要介紹了統(tǒng)一返回JsonResult踩坑的記錄,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2025-06-06
  • Java實(shí)現(xiàn)年獸大作戰(zhàn)游戲詳解

    Java實(shí)現(xiàn)年獸大作戰(zhàn)游戲詳解

    春節(jié)要到了,看慣了前端各種小游戲,確實(shí)做得很好,很精致。本文將為大家介紹一款java版本的年獸大作戰(zhàn)游戲,感興趣的小伙伴可以試一試
    2022-01-01
  • Spring Boot Pf4j模塊化開發(fā)方案設(shè)計(jì)過程解析

    Spring Boot Pf4j模塊化開發(fā)方案設(shè)計(jì)過程解析

    本文介紹了基于SpringPf4j實(shí)現(xiàn)Java版本模塊化開發(fā)的設(shè)計(jì)方案,包括插件化基礎(chǔ)設(shè)施的二次封裝、Spring控制器動(dòng)態(tài)注冊(cè)、SpringDoc-OpenApi集成等,通過這些步驟,實(shí)現(xiàn)插件的動(dòng)態(tài)加載和Swagger接口的動(dòng)態(tài)展示,感興趣的朋友跟隨小編一起看看吧
    2025-12-12
  • java實(shí)現(xiàn)撲克牌牌面小程序

    java實(shí)現(xiàn)撲克牌牌面小程序

    這篇文章主要為大家詳細(xì)介紹了java實(shí)現(xiàn)撲克牌牌面小程序,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-11-11
  • Quartz定時(shí)任務(wù)管理方式(動(dòng)態(tài)添加、停止、恢復(fù)、刪除定時(shí)任務(wù))

    Quartz定時(shí)任務(wù)管理方式(動(dòng)態(tài)添加、停止、恢復(fù)、刪除定時(shí)任務(wù))

    這篇文章主要介紹了Quartz定時(shí)任務(wù)管理方式(動(dòng)態(tài)添加、停止、恢復(fù)、刪除定時(shí)任務(wù)),具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-12-12
  • Spring?@Cacheable注解類內(nèi)部調(diào)用失效的解決方案

    Spring?@Cacheable注解類內(nèi)部調(diào)用失效的解決方案

    這篇文章主要介紹了Spring?@Cacheable注解類內(nèi)部調(diào)用失效的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-01-01
  • IntelliJ IDEA 統(tǒng)一設(shè)置編碼為utf-8編碼的實(shí)現(xiàn)

    IntelliJ IDEA 統(tǒng)一設(shè)置編碼為utf-8編碼的實(shí)現(xiàn)

    這篇文章主要介紹了IntelliJ IDEA 統(tǒng)一設(shè)置編碼為utf-8編碼的實(shí)現(xiàn),小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來(lái)看看吧
    2020-06-06
  • Spring?@Transactional?注解從入門到避坑指南

    Spring?@Transactional?注解從入門到避坑指南

    文章主要講解了Spring的@Transactional注解的使用場(chǎng)景、核心屬性詳解、事務(wù)傳播行為、隔離級(jí)別、回滾配置、底層原理以及失效場(chǎng)景和避免之道,并還給出了最佳實(shí)踐,感興趣的朋友跟隨小編一起看看吧
    2026-05-05
  • Spring注入bean的四種方式總結(jié)

    Spring注入bean的四種方式總結(jié)

    我們談到Spring的時(shí)候一定會(huì)提到IOC容器、DI依賴注入,Spring通過將一個(gè)個(gè)類標(biāo)注為Bean的方法注入到IOC容器中,達(dá)到了控制反轉(zhuǎn)的效果,Spring幫我們實(shí)現(xiàn)了一種通過注解來(lái)實(shí)現(xiàn)注入的方法,所以本文為大家介紹了Spring注入bean的四種方式,需要的朋友可以參考下
    2025-11-11

最新評(píng)論

广南县| 昭苏县| 呼和浩特市| 轮台县| 张掖市| 屏山县| 寻甸| 凯里市| 凌源市| 桂林市| 博客| 慈溪市| 宁晋县| 莱芜市| 礼泉县| 锡林浩特市| 东兰县| 大厂| 无棣县| 牙克石市| 勐海县| 沈阳市| 涪陵区| 稻城县| 改则县| 土默特右旗| 闸北区| 云南省| 岗巴县| 黔西| 洛川县| 清涧县| 绍兴市| 潮安县| 肇源县| 江西省| 临海市| 佳木斯市| 宝丰县| 东台市| 天祝|