使用Java怎么对邮政文件进行压缩与解压缩

  介绍

使用Java怎么对邮政文件进行压缩与解压缩?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。

可能存在的业务情况:

1,用户上传了压缩包,需校验压缩包中的文件是否合格。

2,用户上传压缩包,对压缩包中的文件进行批量水印处理

解决思路:

1,读取原压缩包文件,解压缩至临时目录

2,对临时目录中的解压缩文件进行校验/水印处理

3,对临时目录中处理过的文件进行压缩

4,删除临时目录及其下的文件

需要参考前面的校验PDF的帖子

测试结果如下:

使用Java怎么对邮政文件进行压缩与解压缩

使用Java怎么对邮政文件进行压缩与解压缩

测试代码:

@Test   public 才能;void  testZip (), {   ,,,String  filePath =,“D: \ \ pdfTest \ \合格压缩文件.zip";   ,,,//,获取原文所在目录   ,,,//,服务器上时,文件路径为“/?此处测试需要换成filePath中的“\ \”   ,,,//String  oldFilePath =, filePath.substring (0,, filePath.lastIndexOf (“/?);   ,,,String  oldFilePath =, filePath.substring (0,, filePath.lastIndexOf (“\ \“));   ,,,System.out.println(“原文件路径:“,+,oldFilePath);   ,,,//,临时目录,原压缩文件解压目录   ,,,String  destDirPath =, oldFilePath  +,“\ \ tmp \ \“;   ,,,System.out.println(“临时路径:“,+,destDirPath);   ,,,//,将原压缩文件解压到临时目录   ,,,ZipUtil.unzipFile (destDirPath filePath也);      ,,,//,临时目录文件对象   ,,,File  destDir =, new 文件(destDirPath);   ,,,//,获取临时目录下的所有文件   ,,,文件[],files =, destDir.listFiles ();   ,,,//,定义变量,保存校验结果   ,,,List, list =, new  ArrayList<在();   ,,,//,遍历文件,进行校验   ,,,for  (File 文件:文件),{   ,,,,,String  absolutePath =, file.getAbsolutePath ();   ,,,,,System.out.println (absolutePath);   ,,,,,int 小姐:=,CheckPdfHelper.checkPdf (absolutePath);   ,,,,,list.add(我);   ,,,,,//,压缩包中存在不合格PDF文件时   ,,,,,if (小姐:!=,0),{   ,,,,,,,休息;   ,,,,,}   ,,,}   ,,,//,判断是否包含不合格PDF文件   ,,,if  (list.contains (1)), {   ,,,,,System.out.println(“压缩文件中包含不合格PDF文件“);   ,,,,,//,删除解压缩的文件和临时目录   ,,,,,ZipUtil.deletefile (destDirPath);   ,,,,,//,不合格时,不生成新的压缩包文件   ,,,,,返回;   ,,,},{else    ,,,,,System.out.println(“压缩文件PDF文件均符合要求“);   ,,,}      ,,,//,获取原压缩文件后缀   ,,,int  pos =, filePath.lastIndexOf(& # 39; # 39;公司);   ,,,String  suffix =, filePath.substring (pos  +, 1);   ,,,//,新生成压缩文件路径   ,,,String  newFilePath =, filePath.substring (0, pos), +,“.PSW干净,+,后缀;   ,,,System.out.println(“新的压缩文件路径:“,+,newFilePath);      ,,,//,将检验成功的文件压缩成一个新的压缩包   ,,,ZipUtil.zipFile (newFilePath,文件);   ,,,//,删除临时目录   ,,,ZipUtil.deletefile (destDirPath);   以前,,}

ZipUtil工具类:

package  com.alphajuns.util;      import  java.io.File;   import  java.io.FileInputStream;   import  java.io.FileNotFoundException;   import  java.io.FileOutputStream;   import  java.io.IOException;   import  java.io.InputStream;   import  java.io.OutputStream;   import  java.util.ArrayList;   import 活动;   import 并不知道;      import  org.apache.tools.zip.ZipEntry;   import  org.apache.tools.zip.ZipFile;   import  org.apache.tools.zip.ZipOutputStream;/* *   ,* @ClassName  ZipUtil   ,* @Description 压缩或解压缩邮政编码:由于直接使用zip工具包下的类,会出现中文乱码问题,所以使用ant.jar中的org.apache.tools.zip下的工具类   ,* @Author  AlphaJunS   ,* @Date  2020/3/8  11:30   ,* @Version  1.0   ,*/public  class  ZipUtil  {      ,/* *   ,,*,@Author  AlphaJunS   ,,*,@Date  11:32  2020/3/8   ,,* @Description   ,,*,@param  zip 压缩目的地址   ,,*,@param  srcFiles 压缩的源文件   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null

使用Java怎么对邮政文件进行压缩与解压缩