<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 禮物 閱讀(753) 評論(0)  編輯  收藏 所屬分類: java
    主站蜘蛛池模板: AA免费观看的1000部电影| 香蕉视频免费在线播放| 久久精品国产亚洲AV无码娇色 | 一本大道一卡二大卡三卡免费| 真正全免费视频a毛片| 国产亚洲精品2021自在线| 在线91精品亚洲网站精品成人| 久久精品国产亚洲AV天海翼| 国产亚洲视频在线播放大全| 特级一级毛片免费看| 久久久久国色AV免费观看| a级精品九九九大片免费看| 美女在线视频观看影院免费天天看| 日韩免费在线视频| 亚洲一级免费毛片| 女性自慰aⅴ片高清免费| 成人免费视频国产| 亚洲欧洲中文日韩久久AV乱码| 亚洲中文久久精品无码| 亚洲Aⅴ无码专区在线观看q| 亚洲日产2021三区| 亚洲小说图区综合在线| 美女裸免费观看网站| 国产在线观看xxxx免费| 99久久精品免费精品国产| 在线观看无码AV网站永久免费| 免费国内精品久久久久影院| 亚洲人成人77777网站| 91天堂素人精品系列全集亚洲| 亚洲黄色激情视频| 美女一级毛片免费观看| 成全高清在线观看免费| 97热久久免费频精品99| 四虎影视在线永久免费观看| 亚洲夜夜欢A∨一区二区三区 | 亚洲精品第一国产综合精品99| 日韩亚洲变态另类中文| 亚洲毛片无码专区亚洲乱| 午夜亚洲国产理论片二级港台二级| CAOPORM国产精品视频免费| 巨波霸乳在线永久免费视频|