<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.亚洲成在线| 中文在线免费不卡视频| 亚洲高清最新av网站| 一级看片免费视频| 久久久久久久亚洲精品| 久久成人永久免费播放| 亚洲人成影院在线无码按摩店| 免费网站观看WWW在线观看| 亚洲国产日韩在线视频| 午夜精品射精入后重之免费观看| 日产亚洲一区二区三区| 无码精品A∨在线观看免费| 国产 亚洲 中文在线 字幕| 免费看一级做a爰片久久| 美女被爆羞羞网站在免费观看| 国产亚洲精品精品国产亚洲综合| 2022国内精品免费福利视频| 亚洲精品国产成人片| 最近中文字幕电影大全免费版 | 亚洲伊人成无码综合网 | 国产成人精品免费视频大全五级| 亚洲a∨国产av综合av下载| 亚洲成年人啊啊aa在线观看| baoyu122.永久免费视频| 亚洲成a人不卡在线观看| 精品国产精品久久一区免费式| 特色特黄a毛片高清免费观看| 国产亚洲一区二区在线观看| 亚洲一区二区三区免费在线观看| 亚洲精品无码久久久久秋霞 | 亚洲午夜久久久精品电影院| 国产精品免费一级在线观看| aa级女人大片喷水视频免费| 亚洲一区二区影视| 亚洲AV无码乱码精品国产| 91精品国产免费| 免费一级全黄少妇性色生活片 | 国产福利免费在线观看| 免费无码一区二区三区蜜桃| 在线亚洲高清揄拍自拍一品区|