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

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

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

Java生成壓縮文件工具類

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

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

測試代碼目錄結構

文件壓縮核心工具類

主要有三個入參:

  • 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();// 寫進壓縮文件后,刪除臨時目錄中的源文件
				}
				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/";
		// 用于臨時存放所有的壓縮文件
		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 {
			// 調用壓縮工具進行壓縮
			ZipUtils.createFileZip(fileList, zipFile, myMpa);
			logger.info("壓縮成功!");
		} catch (Exception e) {
			logger.info("壓縮失??!", e);
		}
	}
}

測試結果

總結

以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

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

    Java-web中利用RSA進行加密解密操作的方法示例

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

    深入理解Java設計模式之模板方法模式

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

    使用Spring的ApplicationEvent實現(xiàn)本地事件驅動的實現(xiàn)方法

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

    Java 自定義錯誤類示例代碼

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

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

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

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

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

    SpringBoot敏感數據脫敏的處理方式

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

    SpringBoot項目實戰(zhàn)之數據交互篇

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

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

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

    mybatis如何處理返回結果集

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

最新評論