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

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

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

    Terry.Li-彬

    虛其心,可解天下之問;專其心,可治天下之學;靜其心,可悟天下之理;恒其心,可成天下之業。

      BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
      143 隨筆 :: 344 文章 :: 130 評論 :: 0 Trackbacks

     

    package com.newegg.lab.util;

    import java.io.BufferedOutputStream;
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileNotFoundException;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.OutputStream;
    import java.util.Enumeration;

    import java.util.zip.ZipEntry;
    import java.util.zip.ZipFile;
    import java.util.zip.ZipOutputStream;

    //使用apache的api不存在壓縮文件名亂碼問題(該jar包在ant中)
    //import org.apache.tools.zip.ZipEntry;
    //import org.apache.tools.zip.ZipFile;
    //import org.apache.tools.zip.ZipOutputStream;

    /** *//**
     * 壓縮/解壓縮zip包處理類
     *
     * 
    @author terry.b.li
     * @date 2--2
     
    */

    public class ZipUtil {

        
    /** *//**
         * 壓縮
         *
         * 
    @param zipFileName
         *            壓縮產生的zip包文件名--帶路徑,如果為null或空則默認按文件名生產壓縮文件名
         * 
    @param relativePath
         *            相對路徑,默認為空
         * 
    @param directory
         *            文件或目錄的絕對路徑
         * 
    @throws FileNotFoundException
         * 
    @throws IOException
         * 
    @author terry.b.li
         
    */

        
    public static void zip(String zipFileName, String relativePath,
                String directory) 
    throws FileNotFoundException, IOException {
            String fileName 
    = zipFileName;
            
    if (fileName == null || fileName.trim().equals("")) {
                File temp 
    = new File(directory);
                
    if (temp.isDirectory()) {
                    fileName 
    = directory + ".zip";
                }
     else {
                    
    if (directory.indexOf("."> 0{
                        fileName 
    = directory.substring(0, directory
                                .lastIndexOf(
    "."))
                                
    + "zip";
                    }
     else {
                        fileName 
    = directory + ".zip";
                    }

                }

            }

            ZipOutputStream zos 
    = new ZipOutputStream(new FileOutputStream(fileName));
            
    try {
                zip(zos, relativePath, directory);
            }
     catch (IOException ex) {
                
    throw ex;
            }
     finally {
                
    if (null != zos) {
                    zos.close();
                }

            }

        }


        
    /** *//**
         * 壓縮
         *
         * 
    @param zos
         *            壓縮輸出流
         * 
    @param relativePath
         *            相對路徑
         * 
    @param absolutPath
         *            文件或文件夾絕對路徑
         * 
    @throws IOException
         * 
    @author terry.b.li
         
    */

        
    private static void zip(ZipOutputStream zos, String relativePath,
                String absolutPath) 
    throws IOException {
            File file 
    = new File(absolutPath);
            
    if (file.isDirectory()) {
                File[] files 
    = file.listFiles();
                
    for (int i = 0; i < files.length; i++{
                    File tempFile 
    = files[i];
                    
    if (tempFile.isDirectory()) {
                        String newRelativePath 
    = relativePath + tempFile.getName()
                                
    + File.separator;
                        createZipNode(zos, newRelativePath);
                        zip(zos, newRelativePath, tempFile.getPath());
                    }
     else {
                        zipFile(zos, tempFile, relativePath);
                    }

                }

            }
     else {
                zipFile(zos, file, relativePath);
            }

        }


        
    /** *//**
         * 壓縮文件
         *
         * 
    @param zos
         *            壓縮輸出流
         * 
    @param file
         *            文件對象
         * 
    @param relativePath
         *            相對路徑
         * 
    @throws IOException
         * 
    @author terry.b.li
         
    */

        
    private static void zipFile(ZipOutputStream zos, File file,
                String relativePath) 
    throws IOException {
            ZipEntry entry 
    = new ZipEntry(relativePath + new String(file.getName().getBytes("ISO-8859-1")));
            zos.putNextEntry(entry);
            zos.setComment(
    "this is zip file luckystar");
            InputStream is 
    = null;
            
    try {
                is 
    = new FileInputStream(file);
                
    int BUFFERSIZE = 2 <<10;
                
    int length =0;
                
    byte[] buffer = new byte[BUFFERSIZE];
                
    while ((length = is.read(buffer, 0, BUFFERSIZE)) >= 0{
                    zos.write(buffer, 
    0, length);
                }

                zos.flush();
                zos.closeEntry();
            }
     catch (IOException ex) {
                
    throw ex;
            }
     finally {
                
    if (null != is) {
                    is.close();
                }

            }

        }


        
    /** *//**
         * 創建目錄
         *
         * 
    @param zos
         *            zip輸出流
         * 
    @param relativePath
         *            相對路徑
         * 
    @throws IOException
         * 
    @author terry.b.li
         
    */

        
    private static void createZipNode(ZipOutputStream zos, String relativePath)
                
    throws IOException {
            ZipEntry zipEntry 
    = new ZipEntry(relativePath);
            zos.putNextEntry(zipEntry);
            zos.closeEntry();
        }


        
    /** *//**
         * 解壓縮zip包
         *
         * 
    @param zipFilePath
         *            zip文件路徑
         * 
    @param targetPath
         *            解壓縮到的位置,如果為null或空字符串則默認解壓縮到跟zip包同目錄跟zip包同名的文件夾下
         * 
    @throws IOException
         * 
    @author terry.b.li
         
    */

        
    public static void unzip(String zipFilePath, String targetPath)
                
    throws IOException {
            OutputStream os 
    = null;
            InputStream is 
    = null;
            ZipFile zipFile 
    = null;
            
    try {
                zipFile 
    = new ZipFile(zipFilePath);
                String directoryPath 
    = "";
                
    if (null == targetPath || "".equals(targetPath)) {
                    directoryPath 
    = zipFilePath.substring(0, zipFilePath
                            .lastIndexOf(
    "."));
                }
     else {
                    directoryPath 
    = targetPath;
                }

    //            Enumeration entryEnum = zipFile.getEntries();
                Enumeration entryEnum = zipFile.entries();
                
    if (null != entryEnum) {
                    ZipEntry zipEntry 
    = null;
                    
    while (entryEnum.hasMoreElements()) {
                        zipEntry 
    = (ZipEntry) entryEnum.nextElement();
                        
    if (zipEntry.isDirectory()) {
                            directoryPath 
    = directoryPath + File.separator
                                    
    + zipEntry.getName();
                            System.out.println(directoryPath);
                            
    continue;
                        }

                        
    if (zipEntry.getSize() > 0{
                            
    // 文件
                            File targetFile = FileUtil.buildFile(directoryPath
                                    
    + File.separator + zipEntry.getName(), false);
                            os 
    = new BufferedOutputStream(new FileOutputStream(
                                    targetFile));
                            is 
    = zipFile.getInputStream(zipEntry);
                            
    byte[] buffer = new byte[406];
                            
    int readLen = 0;
                            
    while ((readLen = is.read(buffer, 04096)) >= 0{
                                os.write(buffer, 
    0, readLen);
                            }


                            os.flush();
                            os.close();
                        }
     else {
                            
    // 空目錄
                            FileUtil.buildFile(directoryPath + File.separator
                                    
    + zipEntry.getName(), true);
                        }

                    }

                }

            }
     catch (IOException ex) {
                
    throw ex;
            }
     finally {
                
    if(null != zipFile){
                    zipFile 
    = null;
                }

                
    if (null != is) {
                    is.close();
                }

                
    if (null != os) {
                    os.close();
                }

            }

        }


        
    public static void main(String[] args) {
            
    try {
                ZipUtil.zip(
    "c:\\test.zip""""C:\\Documents and Settings\\Administrator\\桌面\\新建文件夾");
                System.out.println(
    "OK");
            }
     catch (FileNotFoundException e) {
                
    // TODO Auto-generated catch block
                e.printStackTrace();
            }
     catch (IOException e) {
                
    // TODO Auto-generated catch block
                e.printStackTrace();
            }

        }

    }


    posted on 2008-12-07 11:03 禮物 閱讀(761) 評論(0)  編輯  收藏 所屬分類: java
    主站蜘蛛池模板: 美女被爆羞羞网站免费| www.91亚洲| 亚洲一区影音先锋色资源| 一级一片免费视频播放| 久久精品国产亚洲5555| 亚洲黄片手机免费观看| 综合亚洲伊人午夜网| 香蕉高清免费永久在线视频 | 亚洲成熟xxxxx电影| 久久精品国产亚洲AV无码娇色| 久久久WWW成人免费精品| 久久亚洲AV无码西西人体| 久久久久久噜噜精品免费直播 | 亚洲成A人片在线观看WWW| 嫩草在线视频www免费看| 亚洲国产人成网站在线电影动漫| 亚洲欧美成人综合久久久| 黑人粗长大战亚洲女2021国产精品成人免费视频 | 男人的天堂av亚洲一区2区| 日本xxwwxxww在线视频免费| 美女黄频免费网站| 亚洲色精品vr一区二区三区| 久草视频在线免费看| 亚洲一级毛片视频| 永久免费看mv网站入口| sihu国产精品永久免费| 亚洲人成电影亚洲人成9999网| 91网站免费观看| 亚洲成a∧人片在线观看无码| 婷婷综合缴情亚洲狠狠尤物| a级毛片在线免费观看| 最新69国产成人精品免费视频动漫 | 日日躁狠狠躁狠狠爱免费视频| 亚洲色自偷自拍另类小说| 1a级毛片免费观看| 亚洲精品乱码久久久久66| 91精品成人免费国产片| 国内成人精品亚洲日本语音| 国产亚洲精品一品区99热| 色妞WWW精品免费视频| kk4kk免费视频毛片|