<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
    可以使用,多謝
    主站蜘蛛池模板: 亚洲女初尝黑人巨高清| 4虎永免费最新永久免费地址| 久久久www成人免费毛片| 亚洲av色香蕉一区二区三区| 国产福利电影一区二区三区,免费久久久久久久精 | 国产美女精品久久久久久久免费| 亚洲AV午夜成人影院老师机影院| 国产亚洲精品欧洲在线观看| 免费在线观看的网站| 亚洲视频中文字幕在线| 中文无码成人免费视频在线观看| 国产jizzjizz免费看jizz| 亚洲成年网站在线观看| 免费视频爱爱太爽了| 久久久久久亚洲AV无码专区| 你懂得的在线观看免费视频| 久久伊人亚洲AV无码网站| 黑人粗长大战亚洲女2021国产精品成人免费视频| 国产精品爱啪在线线免费观看| 久久国产亚洲观看| 99久久国产精品免费一区二区| 在线亚洲午夜理论AV大片| 一区二区免费在线观看| 免费不卡中文字幕在线| 美女一级毛片免费观看| 日韩亚洲精品福利| 免费精品视频在线| 亚洲国产V高清在线观看| 美女黄色毛片免费看| 亚洲精品成人久久久| 免费无码午夜福利片69| 亚洲一区二区三区乱码A| 国产成人1024精品免费| 亚洲中文字幕无码久久综合网| 久久久受www免费人成| 亚洲国产另类久久久精品黑人 | 亚洲AV日韩AV天堂久久| 一级毛片免费视频| 亚洲国产午夜电影在线入口| 青青草免费在线视频| 亚洲av成人一区二区三区观看在线|