java多个文件压缩并加密
生活随笔
收集整理的這篇文章主要介紹了
java多个文件压缩并加密
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
一開始采用的java自帶的ZipOutputStream進行文件的壓縮。測試發現效率過低,1G文件壓縮時長超過20分鐘。經過比對采用zip4j,測試1G文件壓縮時長在30秒左右,在可接受的范圍內。zip4j也可像平常使用的壓縮軟件對壓縮級別進行調整,現將關鍵代碼記錄下來。
1、壓縮級別說明
//設置壓縮級別parameters.setCompressionLevel(Zip4jConstants.DEFLATE_LEVEL_NORMAL);| DEFLATE_LEVEL_FASTEST | 最低壓縮級別,但壓縮速度更高 |
| DEFLATE_LEVEL_FAST | 低壓縮級別,但壓縮速度更高 |
| DEFLATE_LEVEL_NORMAL | 壓縮水平速度之間的最佳平衡 |
| DEFLATE_LEVEL_MAXIMUM | 高壓縮級別,但速度不佳 |
| DEFLATE_LEVEL_ULTRA | 最高壓縮級別但速度較低 |
2、pom依賴
<!-- zip4j壓縮工具 --><dependency><groupId>net.lingala.zip4j</groupId><artifactId>zip4j</artifactId><version>1.3.2</version></dependency>3、代碼
import net.lingala.zip4j.core.ZipFile; import net.lingala.zip4j.exception.ZipException; import net.lingala.zip4j.model.ZipParameters; import net.lingala.zip4j.util.Zip4jConstants; import org.slf4j.Logger; import org.slf4j.LoggerFactory;import java.io.*; import java.util.ArrayList; import java.util.List;/*** 文件壓縮** @author TK* @since 2021-04-26*/ public class ZipOutputStreamUtil {private static final Logger log = LoggerFactory.getLogger(ZipOutputStreamUtil.class);public static void main(String[] args) {String outPath = "C:\\111\\pdf\\abcd.zip";List<File> filePath = new ArrayList<>();//壓縮文件路徑filePath.add(new File("C:\\111\\1111.exe"));filePath.add(new File("C:\\111\\2222.xlsx"));filePath.add(new File("C:\\111\\abc.xls"));filePath.add(new File("C:\\111\\123.docx"));String password = "123456";//加密密碼boolean result = zipFilesAndEncrypt(filePath, outPath, password);}/*** 文件壓縮** @param filePath 被壓縮文件集合* @param outPath 輸出地址* @param password 密碼* @return*/public static boolean zipFilesAndEncrypt(List<File> filePath, String outPath, String password) {log.info("開始壓縮文件...........");long old = System.currentTimeMillis();boolean result = false;ArrayList<File> filesToAdd = new ArrayList<>();//壓縮路徑的集合for (int i = 0; i < filePath.size(); i++) {//遍歷壓縮文件數據filesToAdd.add(filePath.get(i));}//壓縮配置try {ZipParameters parameters = new ZipParameters();parameters.setCompressionMethod(Zip4jConstants.COMP_DEFLATE);//壓縮方式//設置壓縮級別parameters.setCompressionLevel(Zip4jConstants.DEFLATE_LEVEL_NORMAL);//壓縮級別if (password != null && password != "") {parameters.setEncryptFiles(true);//設置壓縮文件加密parameters.setEncryptionMethod(Zip4jConstants.ENC_METHOD_STANDARD);//加密方式parameters.setPassword(password);//設置加密密碼}ZipFile zipFile = new ZipFile(outPath);//創建壓縮路徑zipFile.setFileNameCharset("gbk");//設置壓縮編碼zipFile.addFiles(filesToAdd, parameters);//添加壓縮文件并進行加密壓縮result = true;} catch (ZipException e) {log.error("文件壓縮出錯", e);}long now = System.currentTimeMillis();log.info("壓縮成功,共耗時:" + ((now - old) / 1000.0) + "秒........"); // 轉化用時return result;}}總結
以上是生活随笔為你收集整理的java多个文件压缩并加密的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【SVG素材网站】免费icon、logo
- 下一篇: STM32采集温湿度