<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    athrunwang

    紀元
    數據加載中……
    用org.apache.tools.zip壓縮/解壓縮zip文件
    寫了一個用org.apache.tools.zip壓縮/解壓縮zip文件的例子,用來解決中文亂碼問題。代碼如下:
    Java代碼  收藏代碼
    1. package org.coolyongzi;  
    2.   
    3. import java.io.File;  
    4. import java.io.FileInputStream;  
    5. import java.io.FileOutputStream;  
    6. import java.io.InputStream;  
    7. import org.apache.tools.zip.ZipEntry;  
    8. import org.apache.tools.zip.ZipFile;  
    9. import org.apache.tools.zip.ZipOutputStream;  
    10. import java.io.IOException;  
    11. import java.util.Enumeration;  
    12. import org.apache.log4j.LogManager;  
    13. import org.apache.log4j.Logger;  
    14.   
    15.   
    16. public class ZipTools {  
    17.     public static final Logger logger = LogManager.getLogger(FileTools.class);  
    18.     public ZipTools()  
    19.     {  
    20.           
    21.     }  
    22.     /* 
    23.      * @description:Compressed files or folders 
    24.      * @param compressedFilePath String,zipFileRootPath String,zipFileName String 
    25.      * @return boolean 
    26.      */  
    27.     public static boolean compressFloderChangeToZip(String compressedFilePath,String zipFileRootPath,String zipFileName)   
    28.     throws IOException  
    29.     {  
    30.         File compressedFile = new File(compressedFilePath);  
    31.         if("".equalsIgnoreCase(zipFileName))  
    32.         {  
    33.             zipFileName = StringTools.getShortFileNameFromFilePath(compressedFilePath);  
    34.         }  
    35.         if(!StringTools.conversionSpecialCharacters(zipFileRootPath).endsWith(File.separator))  
    36.         {  
    37.             zipFileRootPath = zipFileRootPath + File.separator;  
    38.         }  
    39.         ZipOutputStream zipOutputStream = new ZipOutputStream(new FileOutputStream(zipFileRootPath + zipFileName));  
    40.         String base ="";  
    41.         logger.debug("compress [" + compressedFilePath + "] start!");  
    42.         boolean result = ZipTools.compressFloderChangeToZip(compressedFile,zipOutputStream,base);  
    43.         logger.debug("compress [" + compressedFilePath + "] end!");  
    44.         zipOutputStream.close();  
    45.         return result;  
    46.           
    47.     }  
    48.       
    49.     private static  boolean compressFloderChangeToZip(File compressedFile,ZipOutputStream zipOutputStream,String base)   
    50.     throws IOException  
    51.     {  
    52.         FileInputStream fileInputStream = null;  
    53.           
    54.         try{  
    55.             if(compressedFile.isDirectory())  
    56.             {  
    57.                 File[] childrenCompressedFileList = compressedFile.listFiles();  
    58.                 base = base.length() == 0 ? "" : base + File.separator;  
    59.                 for (int i = 0; i < childrenCompressedFileList.length; i++) {  
    60.                     ZipTools.compressFloderChangeToZip(childrenCompressedFileList[i],  
    61.                     zipOutputStream,base+childrenCompressedFileList[i].getName());  
    62.                 }  
    63.             }  
    64.             else  
    65.             {  
    66.                 if("".equalsIgnoreCase(base))  
    67.                 {  
    68.                     base = compressedFile.getName();  
    69.                 }  
    70.                 zipOutputStream.putNextEntry(new ZipEntry(base));  
    71.                 fileInputStream = new FileInputStream(compressedFile);  
    72.                 int b;  
    73.                 while((b=fileInputStream.read())!=-1)  
    74.                 {  
    75.                     zipOutputStream.write(b);  
    76.                 }  
    77.                 fileInputStream.close();  
    78.             }  
    79.             return true;  
    80.         }catch(Exception e)  
    81.         {  
    82.             e.getStackTrace();  
    83.             logger.error(e.getMessage());  
    84.             return false;  
    85.         }  
    86.     }  
    87.     /* 
    88.      * @param:zipFilePath String,releasePath String 
    89.      * @return void 
    90.      * @description:Decompress A File 
    91.      */  
    92.     @SuppressWarnings("unchecked")  
    93.     public static void decompressFile(String zipFilePath,String releasePath) throws IOException  
    94.     {  
    95.         ZipFile zipFile = new ZipFile(zipFilePath);  
    96.         Enumeration<ZipEntry> enumeration = zipFile.getEntries();  
    97.         InputStream inputStream = null;  
    98.         FileOutputStream fileOutputStream = null;  
    99.         ZipEntry zipEntry = null;  
    100.         String zipEntryNameStr ="";  
    101.         String[] zipEntryNameArray = null;  
    102.         while (enumeration.hasMoreElements()) {  
    103.             zipEntry = enumeration.nextElement();  
    104.             zipEntryNameStr = zipEntry.getName();  
    105.             zipEntryNameArray = zipEntryNameStr.split("/");  
    106.             String path = releasePath;  
    107.             File root = new File(releasePath);  
    108.             if(!root.exists())  
    109.             {  
    110.                 root.mkdir();  
    111.             }  
    112.             for (int i = 0; i < zipEntryNameArray.length; i++) {  
    113.                 if(i<zipEntryNameArray.length-1)  
    114.                 {  
    115.                     path = path + File.separator+zipEntryNameArray[i];        
    116.                     new File(StringTools.conversionSpecialCharacters(path)).mkdir();  
    117.                 }                 
    118.                 else  
    119.                 {  
    120.                     if(StringTools.conversionSpecialCharacters(zipEntryNameStr).endsWith(File.separator))  
    121.                     {  
    122.                         new File(releasePath + zipEntryNameStr).mkdir();  
    123.                     }  
    124.                     else  
    125.                     {  
    126.                         inputStream = zipFile.getInputStream(zipEntry);  
    127.                         fileOutputStream = new FileOutputStream(new File(  
    128.                                 StringTools.conversionSpecialCharacters(releasePath + zipEntryNameStr)));     
    129.                         byte[] buf = new byte[1024];  
    130.                         int len;  
    131.                         while ((len = inputStream.read(buf)) > 0)  
    132.                         {  
    133.                             fileOutputStream.write(buf, 0, len);  
    134.                         }  
    135.                         inputStream.close();  
    136.                         fileOutputStream.close();  
    137.                     }  
    138.                 }  
    139.             }  
    140.         }  
    141.         zipFile.close();  
    142.     }  
    143. }  

    junit測試類
    Java代碼  收藏代碼
    1. package org.coolyongzi.testcase;  
    2.   
    3. import java.io.IOException;  
    4.   
    5. import org.coolyongzi.ZipTools;  
    6.   
    7. import junit.framework.TestCase;  
    8.   
    9. public class ZipToolsTest extends TestCase {  
    10.   
    11.     protected void setUp() throws Exception {  
    12.         super.setUp();  
    13.     }  
    14.   
    15.     protected void tearDown() throws Exception {  
    16.         super.tearDown();  
    17.     }  
    18.   
    19.     public void testCompressFloderChangeToZip(){  
    20.         try {  
    21.             ZipTools.compressFloderChangeToZip("f:/iDocumentBanner2.gif", "f:", "test.zip");  
    22.         } catch (IOException e) {  
    23.             // TODO Auto-generated catch block  
    24.             e.printStackTrace();  
    25.         }  
    26.     }  
    27.       
    28.     public void testDecompressFile(){  
    29.         try {  
    30.             ZipTools.decompressFile("f:/java對解壓Zip格式的文件.zip","f:/test/");  
    31.         } catch (IOException e) {  
    32.             // TODO Auto-generated catch block  
    33.             e.printStackTrace();  
    34.             System.out.println(e.getMessage());  
    35.         }  
    36.     }  
    37. }

    posted on 2012-01-03 17:32 AthrunWang 閱讀(5268) 評論(0)  編輯  收藏


    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    主站蜘蛛池模板: 免费手机在线看片| 亚洲男人天堂2018av| 黄页免费视频播放在线播放| 国产无遮挡裸体免费视频| 亚洲日产乱码一二三区别| 成人黄软件网18免费下载成人黄18免费视频 | 91亚洲国产成人精品下载| 色欲国产麻豆一精品一AV一免费| 亚洲国产精品久久久久久| 永久免费视频网站在线观看| 亚洲日韩乱码中文无码蜜桃臀| 波多野结衣中文字幕免费视频| 精品久久久久久亚洲精品| 免费毛片网站在线观看| 手机永久免费的AV在线电影网| 亚洲综合伊人久久综合| 无人在线观看免费高清| 亚洲综合男人的天堂色婷婷| 97在线线免费观看视频在线观看 | 国产一精品一av一免费爽爽| 亚洲黄网站wwwwww| 成年在线网站免费观看无广告 | 久久久久免费精品国产| 亚洲神级电影国语版| 成人免费无毒在线观看网站| 在线观看亚洲电影| 亚洲AV福利天堂一区二区三| 免费看美女裸露无档网站| 麻豆亚洲AV成人无码久久精品 | 91精品视频免费| 免费在线观看一区| 亚洲高清在线视频| 免费做爰猛烈吃奶摸视频在线观看 | 久久久久久99av无码免费网站| 亚洲AV无码男人的天堂| 久久亚洲国产视频| 午夜男人一级毛片免费| 人妻在线日韩免费视频| 一区二区亚洲精品精华液| 在线观看国产区亚洲一区成人 | 亚洲高清国产拍精品青青草原|