用java实现文件的压缩与解压是很常见的功能。
我最爱上代码:
1 import java.io.File; 2 import java.util.ArrayList; 3 import java.util.List; 4 5 import net.lingala.zip4j.core.ZipFile; 6 import net.lingala.zip4j.model.ZipParameters; 7 import net.lingala.zip4j.util.Zip4jConstants; 8 9 /** 10 * zip压缩文件或解压文件工具类 11 * @author xiaoming 12 * 13 */ 14 public class ZipUntil { 15 16 17 /** 18 * 压缩文件的方法 19 * @param files 要压缩文件的地址集合 20 * @param folders 要压缩的文件夹的地址集合 21 * @param pwd 压缩密码 22 * @param appointFile 压缩到指定文件夹的路径 23 * @return 24 * @throws Exception 25 */ 26 public static int compressFile(List<String> files,List<String> folders,String pwd,String appointFile) throws Exception{ 27 int flag=0; 28 if(!appointFile.isEmpty()){ 29 File oldFile=new File(appointFile); 30 if(oldFile.exists()){ 31 return flag; 32 } 33 ZipFile zipFile=new ZipFile(appointFile); 34 ZipParameters parameters = new ZipParameters(); //设置参数 35 parameters.setCompressionMethod(Zip4jConstants.COMP_DEFLATE); 36 parameters.setCompressionLevel(Zip4jConstants.DEFLATE_LEVEL_NORMAL); 37 if (!pwd.isEmpty()) {//有密码,用密码压缩 38 parameters.setEncryptFiles(true); 39 parameters.setEncryptionMethod(Zip4jConstants.ENC_METHOD_AES); 40 parameters.setAesKeyStrength(Zip4jConstants.AES_STRENGTH_256); 41 parameters.setPassword(pwd); 42 } 43 44 if(!files.isEmpty()){ 45 ArrayList<File> toAddFile=new ArrayList<File>(); 46 for(String fileString : files){ 47 File file=new File(fileString); 48 if(file.exists()){ 49 toAddFile.add(file);//添加文件 50 } 51 } 52 if(!toAddFile.isEmpty()){ 53 zipFile.addFiles(toAddFile, parameters); 54 } 55 } 56 if(!folders.isEmpty()){ 57 for(String folder : folders){ 58 File file=new File(folder); 59 if(file.exists()){ 60 zipFile.addFolder(folder, parameters);//添加文件夹 61 } 62 } 63 } 64 flag=1; 65 } 66 return flag; 67 } 68 69 70 /** 71 * 解压文件的方法 72 * @param srcFile 要解压的文件 73 * @param path 解压到的路径 74 * @param pwd 解压密码 75 * @return 76 * @throws Exception 77 */ 78 public static int unzip(String srcFile ,String path,String pwd ) throws Exception{ 79 int flag=0; 80 if(!srcFile.isEmpty()){ 81 ZipFile zipFile=new ZipFile(srcFile);//获取解压的文件 82 if(zipFile.isEncrypted()){ 83 zipFile.setPassword(pwd);//解压密码 84 } 85 zipFile.extractAll(path);//解压到指定路径 86 flag=1; 87 } 88 return flag; 89 } 90 }
以上代码基于zip4j.jar 开发的
相关包与例子下载:http://pan.baidu.com/s/1jGGOcEM
时间: 2024-10-25 18:08:27