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

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

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

    Terry.Li-彬

    虛其心,可解天下之問;專其心,可治天下之學(xué);靜其心,可悟天下之理;恒其心,可成天下之業(yè)。

      BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
      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
         *            壓縮產(chǎn)生的zip包文件名--帶路徑,如果為null或空則默認(rèn)按文件名生產(chǎn)壓縮文件名
         * 
    @param relativePath
         *            相對路徑,默認(rèn)為空
         * 
    @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();
                }

            }

        }


        
    /** *//**
         * 創(chuàng)建目錄
         *
         * 
    @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或空字符串則默認(rèn)解壓縮到跟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
    主站蜘蛛池模板: 18禁网站免费无遮挡无码中文 | 84pao强力永久免费高清| 一本天堂ⅴ无码亚洲道久久| 亚洲午夜福利在线观看| 麻豆国产VA免费精品高清在线 | 波多野结衣免费在线| 久久一区二区免费播放| 久久水蜜桃亚洲AV无码精品 | 亚洲黄色免费观看| 亚洲精品国产成人影院| 免费无码精品黄AV电影| 最近高清中文字幕免费| 国产区在线免费观看| 爱情岛论坛免费视频| 亚洲AV永久无码精品一福利| 亚洲六月丁香六月婷婷蜜芽| 亚洲一级二级三级不卡| 亚洲av永久无码精品漫画| 77777亚洲午夜久久多人| 亚洲伊人久久综合影院| 一级毛片直播亚洲| 免费一级特黄特色大片在线| 日本不卡在线观看免费v| 全免费a级毛片免费看无码| 在线免费观看色片| 成人免费777777| 国内精品免费视频自在线| 蜜桃视频在线观看免费网址入口| 色费女人18女人毛片免费视频| 中文字幕亚洲无线码a| 久久精品国产亚洲Aⅴ蜜臀色欲| 1000部羞羞禁止免费观看视频 | 成人免费一区二区三区在线观看| 一区二区在线视频免费观看| 麻豆安全免费网址入口| 久久精品国产亚洲av品善 | h视频在线观看免费完整版| 99久久人妻精品免费一区| 91大神免费观看| 91情侣在线精品国产免费| 毛片免费全部播放一级|