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

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

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

    athrunwang

    紀(jì)元
    數(shù)據(jù)加載中……
    使用org.apache.tools.zip實(shí)現(xiàn)zip壓縮和解壓
    原創(chuàng)作品,允許轉(zhuǎn)載,轉(zhuǎn)載時請務(wù)必以超鏈接形式標(biāo)明文章 原始出處 、作者信息和本聲明。否則將追究法律責(zé)任。http://wintys.blog.51cto.com/425414/90878
    import java.io.*;
    import org.apache.tools.zip.*;
    import java.util.Enumeration;
    /**
    *功能:zip壓縮、解壓(支持中文文件名)
    *說明:本程序通過使用Apache Ant里提供的zip工具org.apache.tools.zip實(shí)現(xiàn)了zip壓縮和解壓功能.
    *   解決了由于java.util.zip包不支持漢字的問題。
    *   使用java.util.zip包時,當(dāng)zip文件中有名字為中文的文件時,
    *   就會出現(xiàn)異常:"Exception  in thread "main " java.lang.IllegalArgumentException  
    *               at   java.util.zip.ZipInputStream.getUTF8String(ZipInputStream.java:285)
    *注意:
    *   1、使用時把a(bǔ)nt.jar放到classpath中,程序中使用import org.apache.tools.zip.*;
    *   2、Apache Ant 下載地址:[url]http://ant.apache.org/[/url]
    *   3、Ant ZIP API:[url]http://www.jajakarta.org/ant/ant-1.6.1/docs/mix/manual/api/org/apache/tools/zip/[/url]
    *   4、本程序使用Ant 1.7.1 中的ant.jar
    *
    *僅供編程學(xué)習(xí)參考.
    *
    *@author Winty
    *@date   2008-8-3
    *@Usage:
    *   壓縮:java AntZip -zip "directoryName"
    *   解壓:java AntZip -unzip "fileName.zip"
    */

    public class AntZip{
        private ZipFile         zipFile;
        private ZipOutputStream zipOut;     //壓縮Zip
        private ZipEntry        zipEntry;
        private static int      bufSize;    //size of bytes
        private byte[]          buf;
        private int             readedBytes;
        
        public AntZip(){
            this(512);
        }

        public AntZip(int bufSize){
            this.bufSize = bufSize;
            this.buf = new byte[this.bufSize];
        }
        
        //壓縮文件夾內(nèi)的文件
        public void doZip(String zipDirectory){//zipDirectoryPath:需要壓縮的文件夾名
            File file;
            File zipDir;

            zipDir = new File(zipDirectory);
            String zipFileName = zipDir.getName() + ".zip";//壓縮后生成的zip文件名

            try{
                this.zipOut = new ZipOutputStream(new BufferedOutputStream(new FileOutputStream(zipFileName)));
                handleDir(zipDir , this.zipOut);
                this.zipOut.close();
            }catch(IOException ioe){
                ioe.printStackTrace();
            }
        }

        //由doZip調(diào)用,遞歸完成目錄文件讀取
        private void handleDir(File dir , ZipOutputStream zipOut)throws IOException{
            FileInputStream fileIn;
            File[] files;

            files = dir.listFiles();
        
            if(files.length == 0){//如果目錄為空,則單獨(dú)創(chuàng)建之.
                //ZipEntry的isDirectory()方法中,目錄以"/"結(jié)尾.
                this.zipOut.putNextEntry(new ZipEntry(dir.toString() + "/"));
                this.zipOut.closeEntry();
            }
            else{//如果目錄不為空,則分別處理目錄和文件.
                for(File fileName : files){
                    //System.out.println(fileName);

                    if(fileName.isDirectory()){
                        handleDir(fileName , this.zipOut);
                    }
                    else{
                        fileIn = new FileInputStream(fileName);
                        this.zipOut.putNextEntry(new ZipEntry(fileName.toString()));

                        while((this.readedBytes = fileIn.read(this.buf))>0){
                            this.zipOut.write(this.buf , 0 , this.readedBytes);
                        }

                        this.zipOut.closeEntry();
                    }
                }
            }
        }

        //解壓指定zip文件
        public void unZip(String unZipfileName){//unZipfileName需要解壓的zip文件名
            FileOutputStream fileOut;
            File file;
            InputStream inputStream;

            try{
                this.zipFile = new ZipFile(unZipfileName);

                for(Enumeration entries = this.zipFile.getEntries(); entries.hasMoreElements();){
                    ZipEntry entry = (ZipEntry)entries.nextElement();
                    file = new File(entry.getName());

                    if(entry.isDirectory()){
                        file.mkdirs();
                    }
                    else{
                        //如果指定文件的目錄不存在,則創(chuàng)建之.
                        File parent = file.getParentFile();
                        if(!parent.exists()){
                            parent.mkdirs();
                        }

                        inputStream = zipFile.getInputStream(entry);

                        fileOut = new FileOutputStream(file);
                        while(( this.readedBytes = inputStream.read(this.buf) ) > 0){
                            fileOut.write(this.buf , 0 , this.readedBytes );
                        }
                        fileOut.close();

                        inputStream.close();
                    }    
                }
                this.zipFile.close();
            }catch(IOException ioe){
                ioe.printStackTrace();
            }
        }

        //設(shè)置緩沖區(qū)大小
        public void setBufSize(int bufSize){
            this.bufSize = bufSize;
        }

        //測試AntZip類
        public static void main(String[] args)throws Exception{
            if(args.length==2){
                String name = args[1];
                AntZip zip = new AntZip();

                if(args[0].equals("-zip"))
                    zip.doZip(name);
                else if(args[0].equals("-unzip"))
                    zip.unZip(name);
            }
            else{
                System.out.println("Usage:");
                System.out.println("壓縮:java AntZip -zip directoryName");
                System.out.println("解壓:java AntZip -unzip fileName.zip");
                throw new Exception("Arguments error!");
            }
        }
    }

    posted on 2012-01-03 17:32 AthrunWang 閱讀(1553) 評論(0)  編輯  收藏


    只有注冊用戶登錄后才能發(fā)表評論。


    網(wǎng)站導(dǎo)航:
     
    主站蜘蛛池模板: 亚洲日韩精品无码专区| 亚洲AV无码成人精品区天堂 | 亚洲∧v久久久无码精品| 日本黄页网址在线看免费不卡| 国产91在线免费| 美女黄频视频大全免费的| 免费永久在线观看黄网站| 男女猛烈xx00免费视频试看| 免费国产成人午夜私人影视 | 无码高潮少妇毛多水多水免费| 国产成人精品日本亚洲11| 97无码免费人妻超级碰碰夜夜| 中文字幕在线观看亚洲日韩| 精品久久免费视频| 美女扒开尿口给男人爽免费视频| 亚洲成年人啊啊aa在线观看| 成人精品视频99在线观看免费| 国产亚洲3p无码一区二区| 99热精品在线免费观看| 亚洲人精品亚洲人成在线| 国产在线a不卡免费视频| CAOPORN国产精品免费视频| 亚洲最新视频在线观看| 国内大片在线免费看| 一级特黄录像免费播放肥| 亚洲电影一区二区| 成年在线观看免费人视频草莓| 国产精品亚洲综合| 亚洲va久久久噜噜噜久久男同| 97在线观免费视频观看 | 国产午夜精品理论片免费观看| 久久国产亚洲高清观看| 永久免费观看的毛片的网站| 黄床大片免费30分钟国产精品| 亚洲精品视频在线观看视频| 国产成人精品免费视频大全五级 | 亚洲AV无码久久精品成人 | 久久久久亚洲精品天堂| 日本免费无遮挡吸乳视频电影| 97在线视频免费公开视频| 亚洲五月丁香综合视频|