<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
    主站蜘蛛池模板: 亚洲影视一区二区| 亚洲福利视频一区| 亚洲香蕉久久一区二区| a级男女仿爱免费视频| 中文字幕日韩亚洲| 国产成人精品免费视频大全| 亚洲国产成人久久精品99| 黄色a三级免费看| 亚洲成年看片在线观看| 午夜在线免费视频| 在线观看午夜亚洲一区| 国产午夜免费高清久久影院| 亚洲人成在线电影| 日韩在线免费视频| 亚洲卡一卡二卡乱码新区| 国产精品免费小视频| 免费精品视频在线| 亚洲日本va在线视频观看| 中文字幕视频在线免费观看| 亚洲欧洲第一a在线观看| 无码国产精品一区二区免费式影视 | 两个人的视频www免费| 久久久久亚洲精品成人网小说 | caoporm超免费公开视频| 狠狠色伊人亚洲综合成人| 亚洲视频在线观看免费| 亚洲一区二区三区在线观看蜜桃| 好吊妞视频免费视频| 有色视频在线观看免费高清在线直播 | 最近2019中文字幕免费直播| 亚洲男人电影天堂| 国产自产拍精品视频免费看| 72pao国产成视频永久免费| 亚洲视频在线观看免费视频| 成全视频在线观看免费高清动漫视频下载 | 免费视频爱爱太爽了| 大桥未久亚洲无av码在线| 亚洲情XO亚洲色XO无码| 免费精品国产自产拍在 | 久久精品无码精品免费专区| 亚洲Av高清一区二区三区|