java實現檔案壓縮與解壓

來源:互聯網
上載者:User

標籤:

用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實現檔案壓縮與解壓

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.