<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 閱讀(5633) 評論(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
    可以使用,多謝
    主站蜘蛛池模板: 国产成人精品免费视频大全| 亚洲午夜久久久精品影院| 亚洲永久在线观看| 亚洲精品高清一二区久久| 亚洲精品无码av天堂| 黄色免费网址在线观看| 免费A级毛片无码A| 亚洲精品夜夜夜妓女网 | 国产AV无码专区亚洲Av| 一个人看的www视频免费在线观看 一个人看的免费观看日本视频www | 亚洲欧洲国产精品久久| 国产精品亚洲一区二区三区久久| 成熟女人特级毛片www免费| 亚洲精品无码永久在线观看 | 国产免费久久久久久无码| 亚洲日韩国产一区二区三区| 亚洲国产精品综合久久2007| 色窝窝免费一区二区三区| 国产成人精品亚洲日本在线| 免费看香港一级毛片| 美女被免费网站视频在线| 中文国产成人精品久久亚洲精品AⅤ无码精品 | 久9久9精品免费观看| 免费观看的毛片手机视频| 国产精品手机在线亚洲| 久久亚洲中文字幕精品一区四| a级毛片免费高清毛片视频| 亚洲免费视频在线观看| 久久久久国色AV免费看图片| 亚洲av片在线观看| 亚洲中文字幕无码日韩| 国产免费一区二区三区| 小说专区亚洲春色校园| 四虎影院免费视频| 亚洲阿v天堂在线2017免费| 亚洲欧洲在线观看| 日韩激情淫片免费看| 三年在线观看免费观看完整版中文| 国产一精品一aⅴ一免费| 亚洲AV无码片一区二区三区| 日韩亚洲变态另类中文|