Java實(shí)現(xiàn)自動(dòng)壓縮文件并加密的方法示例
本文實(shí)例講述了Java實(shí)現(xiàn)自動(dòng)壓縮文件并加密的方法。分享給大家供大家參考,具體如下:
實(shí)現(xiàn)功能:自動(dòng)壓縮并加密
/**
*
* @Title: zipFilesAndEncrypt
* @Description: 將指定路徑下的文件壓縮至指定zip文件,并以指定密碼加密,若密碼為空,則不進(jìn)行加密保護(hù)
* @param srcFileName 待壓縮文件路徑
* @param zipFileName zip文件名
* @param password 加密密碼
* @return
* @throws Exception
*/
public void zipFilesAndEncrypt(String srcFileName,String zipFileName,String password) throws Exception{
ZipOutputStream outputStream=null;
System.out.println("進(jìn)入測(cè)試類(lèi)");
if(StringUtils.isEmpty(srcFileName) || StringUtils.isEmpty(zipFileName)){
log.error("請(qǐng)求的壓縮路徑或者文件名有誤");
return;
}
try {
ZipParameters parameters = new ZipParameters();
parameters.setCompressionMethod(Zip4jConstants.COMP_DEFLATE);
parameters.setCompressionLevel(Zip4jConstants.DEFLATE_LEVEL_NORMAL);
if(!StringUtils.isEmpty(password)){
parameters.setEncryptFiles(true);
parameters.setEncryptionMethod(Zip4jConstants.ENC_METHOD_AES);
parameters.setAesKeyStrength(Zip4jConstants.AES_STRENGTH_256);
parameters.setPassword(password);
}
ArrayList<File> filesToAdd = new ArrayList<File>();
File file=new File(srcFileName);
File[] files = new File[0];
if(file.isDirectory())
{
files = file.listFiles();
for(int i=0;i<files.length;i++){
filesToAdd.add(new File(srcFileName+files[i].getName()));
System.out.println("文件名稱(chēng):"+files[i].getName());
}
}
else {
filesToAdd.add(new File(srcFileName+file.getName()));
}
ZipFile zipFile = new ZipFile(srcFileName+zipFileName+".zip");
zipFile.addFiles(filesToAdd, parameters);
}
catch (Exception e) {
System.out.println("文件壓縮出錯(cuò)");
log.error("文件壓縮出錯(cuò)", e);
throw e;
}
}
更多關(guān)于java算法相關(guān)內(nèi)容感興趣的讀者可查看本站專(zhuān)題:《Java文件與目錄操作技巧匯總》、《Java數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Java操作DOM節(jié)點(diǎn)技巧總結(jié)》和《Java緩存操作技巧匯總》
希望本文所述對(duì)大家java程序設(shè)計(jì)有所幫助。
相關(guān)文章
Spring中的動(dòng)態(tài)數(shù)據(jù)源解讀
這篇文章主要介紹了關(guān)于Spring中的動(dòng)態(tài)數(shù)據(jù)源解讀,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-06-06
詳解Java并發(fā)工具類(lèi)之CountDownLatch和CyclicBarrier
在JDK的并發(fā)包中,有幾個(gè)非常有用的并發(fā)工具類(lèi),它們分別是:CountDownLatch、CyclicBarrier、Semaphore和Exchanger,本文主要來(lái)講講其中CountDownLatch和CyclicBarrier的使用,感興趣的可以了解一下2023-06-06
Java整合Redis實(shí)現(xiàn)坐標(biāo)附近查詢功能
這篇文章主要介紹了Java整合Redis實(shí)現(xiàn)坐標(biāo)附近查詢,我們可以在redis服務(wù)器使用命令 help xxx 查看指令的具體用法,本文給大家介紹的非常詳細(xì),感興趣的朋友一起看看吧2023-11-11
SpringBoot線程池和Java線程池的使用和實(shí)現(xiàn)原理解析
這篇文章主要介紹了SpringBoot線程池和Java線程池的用法和實(shí)現(xiàn)原理,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-04-04
解決springboot啟動(dòng)Logback報(bào)錯(cuò)ERROR in ch.qos.logback.cla
這篇文章主要介紹了解決springboot啟動(dòng)Logback報(bào)錯(cuò)ERROR in ch.qos.logback.classic.joran.action.ContextNameAction - Failed to rena問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-04-04

