<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)  編輯  收藏


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


    網站導航:
     
    主站蜘蛛池模板: 亚洲国产aⅴ综合网| 在线免费观看色片| 亚洲女初尝黑人巨高清| 有色视频在线观看免费高清在线直播| 欧美a级在线现免费观看| 亚洲一区二区三区亚瑟| 国产在线观看免费观看不卡| 亚洲一区二区在线免费观看| 在线播放免费人成毛片乱码| 久久亚洲精品中文字幕无码| 国色精品va在线观看免费视频| 亚洲AV综合色区无码另类小说| 日韩精品无码一区二区三区免费 | 亚洲А∨精品天堂在线| 无码人妻一区二区三区免费视频 | sihu国产精品永久免费| 亚洲国产精品无码久久久不卡| 久久久久久影院久久久久免费精品国产小说 | 无码人妻精品中文字幕免费东京热| 亚洲成A∨人片在线观看无码| 成人免费午夜无码视频| 亚洲另类自拍丝袜第五页| 四虎永久免费地址在线观看| xxxx日本在线播放免费不卡| 久久夜色精品国产亚洲| 99久久99久久精品免费看蜜桃 | 亚洲AV无码乱码在线观看代蜜桃 | 永久免费不卡在线观看黄网站| 亚洲成人网在线观看| 热99re久久精品精品免费| 一边摸一边桶一边脱免费视频| 亚洲AV成人片色在线观看高潮| 国产成人免费在线| 黄色三级三级三级免费看| 久久香蕉国产线看观看亚洲片| 成人免费网站在线观看| 一二三区免费视频| 亚洲一级大黄大色毛片| 亚洲裸男gv网站| 国产乱码免费卡1卡二卡3卡| 黄色三级三级免费看|