java中文件如何加密壓縮?
阿新 • • 發佈:2018-10-27
到你 toc sdi eth word getpath cat private 多文件
目錄
- 文件加密壓縮
- 1.單個文件加密壓縮
- 2.多文件加密壓縮
@(終於等到你)
文件加密壓縮
在現如今已經可以實現大部分功能的互聯網需求中,安全成為了需要的非必需品,工作需求中會遇到對導出的 excel 報表 做加密壓縮的問題,今天有時間總結一下,我這裏簡單列舉功能代碼,連帶其它代碼文末會一並給出。
1.單個文件加密壓縮
單個文件加密方法,需傳輸 3 個參數:被壓縮源文件,壓縮目標文件和加密密鑰,如下
/** * @Title: encrypt_zip * @Description:將指定路徑下的文件壓縮至指定zip文件,並以指定密碼加密,若密碼為空,則不進行加密保護 * @param src_file 待壓縮文件路徑 * @param dst_file zip路徑+文件名 * @param encode 加密密碼 * @return */ public static void encrypt_zip(String src_file, String dst_file, String encode) { File file = new File(src_file); ZipParameters parameters = new ZipParameters(); parameters.setCompressionMethod(Zip4jConstants.COMP_DEFLATE);//壓縮方式 parameters.setCompressionLevel(Zip4jConstants.DEFLATE_LEVEL_NORMAL); // 壓縮級別 parameters.setEncryptFiles(true); parameters.setEncryptionMethod(Zip4jConstants.ENC_METHOD_STANDARD);//加密方式 parameters.setPassword(encode.toCharArray());//設置密碼 try { ZipFile zipFile = new ZipFile(dst_file); zipFile.setFileNameCharset("gbk"); zipFile.addFile(file, parameters); } catch (ZipException e) { e.printStackTrace(); } }
2.多文件加密壓縮
多文件加密壓縮和單文件類似,但是,這個方法包含上面的方法,甚至功能上可以替換上面方法,具體看下 code
/** * @Title: zipFilesAndEncrypt * @Description: 將指定路徑下的文件壓縮至指定zip文件,並以指定密碼加密,若密碼為空,則不進行加密保護 * @param srcFileName 待壓縮文件路徑 或 文件夾路徑 * @param zipFileName zip路徑+文件名 * @param password 加密密碼 * @return */ public static void zipFilesAndEncrypt(String srcFileName,String zipFileName,String password){ if(StrTool.is_empty(srcFileName) || StrTool.is_empty(zipFileName)){ System.out.println("請求的壓縮路徑或者文件名有誤"); return; } try { ZipParameters parameters = new ZipParameters(); parameters.setCompressionMethod(Zip4jConstants.COMP_DEFLATE);//壓縮方式 parameters.setCompressionLevel(Zip4jConstants.DEFLATE_LEVEL_NORMAL);//壓縮級別 if(!StrTool.is_empty(password)){ parameters.setEncryptFiles(true); parameters.setEncryptionMethod(Zip4jConstants.ENC_METHOD_STANDARD);//加密方式 parameters.setPassword(password); } ArrayList<File> filesToAdd=getFiles(srcFileName); ZipFile zipFile = new ZipFile(zipFileName); zipFile.setFileNameCharset("gbk"); zipFile.addFiles(filesToAdd, parameters); } catch (ZipException e) { System.out.println("文件壓縮出錯"); e.printStackTrace(); } } //通過路徑獲取壓縮文件集合 private static ArrayList<File> getFiles(String srcFileName){ 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++){ if(files[i].getName().endsWith(".xls")){//xls結尾的excel添加壓縮集合 filesToAdd.add(new File(files[i].getPath())); System.out.println("文件:"+files[i].getPath()); } } } else { filesToAdd.add(new File(file.getPath())); } return filesToAdd; }
具體代碼請到 github 自行下載
說在最後,如果有什麽問題,請留言,我會盡量在第一時間給您答復
java中文件如何加密壓縮?