<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
    實際開發中可能會用到壓縮或解壓縮,底層借助于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";
        
        
    /**
         * 文件讀取緩沖區大小
         
    */

        
    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
    可以使用,多謝
    主站蜘蛛池模板: 亚洲中文字幕在线乱码| 青青青青青青久久久免费观看| MM131亚洲国产美女久久| 2021在线永久免费视频| 成人免费福利电影| 亚洲精品综合久久| 九九久久国产精品免费热6| 亚洲性久久久影院| 中文字幕永久免费| 亚洲国产精品lv| 国产精品免费网站| 精品国产综合成人亚洲区| 亚洲欧洲日产国码二区首页| 最近免费中文字幕大全免费版视频| 亚洲最大福利视频网站| 亚州免费一级毛片| 亚洲色欲色欲www在线播放 | 一级毛片在线播放免费| 亚洲日本中文字幕一区二区三区| 国产精品免费久久久久影院| 成人免费视频软件网站| 亚洲国产AV一区二区三区四区 | 国产在线观看免费观看不卡| 亚洲中文字幕无码中文| 免费萌白酱国产一区二区| 亚洲成a人片毛片在线| 成人黄页网站免费观看大全| 日本一区二区三区在线视频观看免费 | 又粗又大又黑又长的免费视频| 亚洲中文无码亚洲人成影院| 亚洲AⅤ优女AV综合久久久| 亚洲成a人不卡在线观看| 久久这里只有精品国产免费10| 亚洲黄色网址在线观看| 免费黄色大片网站| 中文字幕久无码免费久久| 一本色道久久88亚洲精品综合 | 国产妇乱子伦视频免费| 成人亚洲国产精品久久| 日韩免费福利视频| 国产成人亚洲精品蜜芽影院|