介绍
使用Java怎么对邮政文件进行压缩与解压缩?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。
可能存在的业务情况:
1,用户上传了压缩包,需校验压缩包中的文件是否合格。
2,用户上传压缩包,对压缩包中的文件进行批量水印处理
解决思路:
1,读取原压缩包文件,解压缩至临时目录
2,对临时目录中的解压缩文件进行校验/水印处理
3,对临时目录中处理过的文件进行压缩
4,删除临时目录及其下的文件
需要参考前面的校验PDF的帖子
测试结果如下:
测试代码:
@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怎么对邮政文件进行压缩与解压缩