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

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

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

Java生成壓縮文件工具類

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

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

測試代碼目錄結(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());
			}  
		}
	}
}

測試代碼

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() {
		
		// 源文件存儲路徑
		String srcPath = this.getClass().getClassLoader().getResource("").getPath();
		// 壓縮包存儲路徑
		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);
		}
	}
}

測試結(jié)果

總結(jié)

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

相關(guān)文章

  • Java-web中利用RSA進(jìn)行加密解密操作的方法示例

    Java-web中利用RSA進(jìn)行加密解密操作的方法示例

    這篇文章主要給大家介紹了關(guān)于在Java-web中利用RSA進(jìn)行加密解密操作的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2018-08-08
  • 深入理解Java設(shè)計(jì)模式之模板方法模式

    深入理解Java設(shè)計(jì)模式之模板方法模式

    這篇文章主要介紹了JAVA設(shè)計(jì)模式之模板方法模式的的相關(guān)資料,文中示例代碼非常詳細(xì),供大家參考和學(xué)習(xí),感興趣的朋友可以了解
    2021-11-11
  • 使用Spring的ApplicationEvent實(shí)現(xiàn)本地事件驅(qū)動(dòng)的實(shí)現(xiàn)方法

    使用Spring的ApplicationEvent實(shí)現(xiàn)本地事件驅(qū)動(dòng)的實(shí)現(xiàn)方法

    本文介紹了如何使用Spring的ApplicationEvent實(shí)現(xiàn)本地事件驅(qū)動(dòng),通過自定義事件和監(jiān)聽器,實(shí)現(xiàn)模塊之間的松耦合,提升代碼的可維護(hù)性和擴(kuò)展性。同時(shí)還介紹了異步事件和事件傳遞的相關(guān)知識
    2023-04-04
  • Java 自定義錯(cuò)誤類示例代碼

    Java 自定義錯(cuò)誤類示例代碼

    以下是對Java中自定義錯(cuò)誤類的示例代碼進(jìn)行了介紹。需要的朋友可以過來參考下
    2013-08-08
  • SpringBoot引入SPEL模板字符串替換的兩種方式

    SpringBoot引入SPEL模板字符串替換的兩種方式

    在 Spring Boot 中,我們可以使用字符串替換工具類來實(shí)現(xiàn)這些功能,本文主要介紹了SpringBoot引入SPEL模板字符串替換的兩種方式,具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-03-03
  • Mybatis實(shí)現(xiàn)分包定義數(shù)據(jù)庫的原理與過程

    Mybatis實(shí)現(xiàn)分包定義數(shù)據(jù)庫的原理與過程

    這篇文章主要給大家介紹了關(guān)于Mybatis實(shí)現(xiàn)分包定義數(shù)據(jù)庫的原理與過程,文中通過實(shí)例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2022-01-01
  • SpringBoot敏感數(shù)據(jù)脫敏的處理方式

    SpringBoot敏感數(shù)據(jù)脫敏的處理方式

    在Spring Boot中處理敏感數(shù)據(jù)脫敏,可以通過以下幾種方式實(shí)現(xiàn),確保敏感信息在接口返回、日志輸出、數(shù)據(jù)庫存儲等環(huán)節(jié)得到保護(hù),文中通過代碼示例講解的非常詳細(xì),需要的朋友可以參考下
    2025-03-03
  • SpringBoot項(xiàng)目實(shí)戰(zhàn)之?dāng)?shù)據(jù)交互篇

    SpringBoot項(xiàng)目實(shí)戰(zhàn)之?dāng)?shù)據(jù)交互篇

    這篇文章主要給大家介紹了關(guān)于SpringBoot項(xiàng)目實(shí)戰(zhàn)之?dāng)?shù)據(jù)交互篇的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2022-03-03
  • springboot+HttpInvoke?實(shí)現(xiàn)RPC調(diào)用的方法

    springboot+HttpInvoke?實(shí)現(xiàn)RPC調(diào)用的方法

    RPC框架大家或多或少都用過,出自于阿里系的就有dubbo,HSF,sofaRPC等,今天通過本文給大家介紹springboot+HttpInvoke?實(shí)現(xiàn)RPC調(diào)用的方法,感興趣的朋友一起看看吧
    2022-03-03
  • mybatis如何處理返回結(jié)果集

    mybatis如何處理返回結(jié)果集

    這篇文章主要介紹了mybatis如何處理返回結(jié)果集問題,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-12-12

最新評論