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

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

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

    ice world

    There is nothing too difficult if you put your heart into it.
    posts - 104, comments - 103, trackbacks - 0, articles - 0

    Java Zip Utils 壓縮/解壓縮工具包

    Posted on 2012-05-26 10:51 IceWee 閱讀(5614) 評論(1)  編輯  收藏 所屬分類: Java
    實際開發(fā)中可能會用到壓縮或解壓縮,底層借助于apache的zip,依賴jar文件:ant-1.7.1.jar

    ZipUtilsTester.java
    public static void main(String[] args) throws Exception {
            String sourceFolder 
    = "D:/壓縮文件夾";
            String zipFilePath 
    = "D:/壓縮包.zip";
            String destDir 
    = "D:/";
            ZipUtils.zip(sourceFolder, zipFilePath);
            ZipUtils.unZip(zipFilePath, destDir);
        }


    ZipUtils.java
    import java.io.BufferedInputStream;
    import java.io.BufferedOutputStream;
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileOutputStream;
    import java.io.InputStream;
    import java.io.OutputStream;
    import java.util.Enumeration;

    import org.apache.tools.zip.ZipEntry;
    import org.apache.tools.zip.ZipFile;
    import org.apache.tools.zip.ZipOutputStream;

    /**
     * <p>
     * ZIP工具包
     * </p>
     * <p>
     * 依賴:ant-1.7.1.jar
     * </p>
     * 
     * 
    @author IceWee
     * @date 2012-5-26
     * 
    @version 1.0
     
    */

    public class ZipUtils {
        
        
    /**
         * 使用GBK編碼可以避免壓縮中文文件名亂碼
         
    */

        
    private static final String CHINESE_CHARSET = "GBK";
        
        
    /**
         * 文件讀取緩沖區(qū)大小
         
    */

        
    private static final int CACHE_SIZE = 1024;
        
        
    /**
         * <p>
         * 壓縮文件
         * </p>
         * 
         * 
    @param sourceFolder 壓縮文件夾
         * 
    @param zipFilePath 壓縮文件輸出路徑
         * 
    @throws Exception
         
    */

        
    public static void zip(String sourceFolder, String zipFilePath) throws Exception {
            OutputStream out 
    = new FileOutputStream(zipFilePath);
            BufferedOutputStream bos 
    = new BufferedOutputStream(out);
            ZipOutputStream zos 
    = new ZipOutputStream(bos);
            
    // 解決中文文件名亂碼
            zos.setEncoding(CHINESE_CHARSET);
            File file 
    = new File(sourceFolder);
            String basePath 
    = null;
            
    if (file.isDirectory()) {
                basePath 
    = file.getPath();
            }
     else {
                basePath 
    = file.getParent();
            }

            zipFile(file, basePath, zos);
            zos.closeEntry();
            zos.close();
            bos.close();
            out.close();
        }

        
        
    /**
         * <p>
         * 遞歸壓縮文件
         * </p>
         * 
         * 
    @param parentFile
         * 
    @param basePath
         * 
    @param zos
         * 
    @throws Exception
         
    */

        
    private static void zipFile(File parentFile, String basePath, ZipOutputStream zos) throws Exception {
            File[] files 
    = new File[0];
            
    if (parentFile.isDirectory()) {
                files 
    = parentFile.listFiles();
            }
     else {
                files 
    = new File[1];
                files[
    0= parentFile;
            }

            String pathName;
            InputStream is;
            BufferedInputStream bis;
            
    byte[] cache = new byte[CACHE_SIZE];
            
    for (File file : files) {
                
    if (file.isDirectory()) {
                    pathName 
    = file.getPath().substring(basePath.length() + 1+ "/";
                    zos.putNextEntry(
    new ZipEntry(pathName));
                    zipFile(file, basePath, zos);
                }
     else {
                    pathName 
    = file.getPath().substring(basePath.length() + 1);
                    is 
    = new FileInputStream(file);
                    bis 
    = new BufferedInputStream(is);
                    zos.putNextEntry(
    new ZipEntry(pathName));
                    
    int nRead = 0;
                    
    while ((nRead = bis.read(cache, 0, CACHE_SIZE)) != -1{
                        zos.write(cache, 
    0, nRead);
                    }

                    bis.close();
                    is.close();
                }

            }

        }

        
        
    /**
         * <p>
         * 解壓壓縮包
         * </p>
         * 
         * 
    @param zipFilePath 壓縮文件路徑
         * 
    @param destDir 壓縮包釋放目錄
         * 
    @throws Exception
         
    */

        
    public static void unZip(String zipFilePath, String destDir) throws Exception {
            ZipFile zipFile 
    = new ZipFile(zipFilePath, CHINESE_CHARSET);
            Enumeration
    <?> emu = zipFile.getEntries();
            BufferedInputStream bis;
            FileOutputStream fos;
            BufferedOutputStream bos;
            File file, parentFile;
            ZipEntry entry;
            
    byte[] cache = new byte[CACHE_SIZE];
            
    while (emu.hasMoreElements()) {
                entry 
    = (ZipEntry) emu.nextElement();
                
    if (entry.isDirectory()) {
                    
    new File(destDir + entry.getName()).mkdirs();
                    
    continue;
                }

                bis 
    = new BufferedInputStream(zipFile.getInputStream(entry));
                file 
    = new File(destDir + entry.getName());
                parentFile 
    = file.getParentFile();
                
    if (parentFile != null && (!parentFile.exists())) {
                    parentFile.mkdirs();
                }

                fos 
    = new FileOutputStream(file);
                bos 
    = new BufferedOutputStream(fos, CACHE_SIZE);
                
    int nRead = 0;
                
    while ((nRead = bis.read(cache, 0, CACHE_SIZE)) != -1{
                    fos.write(cache, 
    0, nRead);
                }

                bos.flush();
                bos.close();
                fos.close();
                bis.close();
            }

            zipFile.close();
        }

        
    }





    Feedback

    # re: Java Zip Utils 壓縮/解壓縮工具包[未登錄]  回復  更多評論   

    2014-05-14 17:12 by test
    可以使用,多謝
    主站蜘蛛池模板: www国产亚洲精品久久久| 精品国产免费观看一区| 亚洲精品无码久久千人斩| 免费无码午夜福利片69| 亚洲AV成人精品日韩一区18p| 亚洲色偷偷色噜噜狠狠99网| 成年女人永久免费观看片| 无码天堂va亚洲va在线va| 亚洲中久无码不卡永久在线观看| 一区二区免费电影| 亚洲AV福利天堂一区二区三 | 一级毛片人与动免费观看| 亚洲成A∨人片天堂网无码| 成av免费大片黄在线观看| 亚洲国产成人精品不卡青青草原| 182tv免费视视频线路一二三| 亚洲免费二区三区| 四虎成人免费网站在线| 深夜久久AAAAA级毛片免费看| 亚洲av午夜成人片精品网站 | 日本媚薬痉挛在线观看免费| 午夜免费国产体验区免费的| 久久亚洲国产午夜精品理论片| 永久免费视频网站在线观看| 性色av极品无码专区亚洲| 亚洲伊人久久精品影院| 亚洲美女视频免费| 色一情一乱一伦一视频免费看| 亚洲αv久久久噜噜噜噜噜| 无码人妻久久一区二区三区免费丨| 国产成人亚洲精品蜜芽影院| 亚洲av无码一区二区三区网站| 噼里啪啦电影在线观看免费高清 | 美女黄频免费网站| 亚洲AV无码乱码国产麻豆 | 无码一区二区三区免费视频| 国产免费播放一区二区| 亚洲一区中文字幕在线观看| 亚洲 另类 无码 在线| 精品无码免费专区毛片| 亚州**色毛片免费观看|