標籤:
用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 xiaoming12 *13 */14 public class ZipUntil {15 16 17 /**18 * 壓縮檔的方法19 * @param files 要壓縮檔的地址集合20 * @param folders 要壓縮的檔案夾的地址集合21 * @param pwd 壓縮密碼22 * @param appointFile 壓縮到指定檔案夾的路徑23 * @return24 * @throws Exception25 */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 * @return76 * @throws Exception77 */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
java實現檔案壓縮與解壓