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

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

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

    隨筆 - 117  文章 - 72  trackbacks - 0

    聲明:原創作品(標有[原]字樣)轉載時請注明出處,謝謝。

    常用鏈接

    常用設置
    常用軟件
    常用命令
     

    訂閱

    訂閱

    留言簿(7)

    隨筆分類(130)

    隨筆檔案(123)

    搜索

    •  

    積分與排名

    • 積分 - 155760
    • 排名 - 390

    最新評論

    import java.io.*;
    import java.util.zip.*;
    /**
    *功能:zip壓縮、解壓
    *說明:本程序通過ZipOutputStream和ZipInputStream實現了zip壓縮和解壓功能.
    *問題:由于java.util.zip包并不支持漢字,當zip文件中有名字為中文的文件時,
    *     就會出現異常:"Exception  in thread "main " java.lang.IllegalArgumentException  
    *               at   java.util.zip.ZipInputStream.getUTF8String(ZipInputStream.java:285)
    *解決:
    *  方法1、修改import java.util.zip.ZipInputStream和ZipOutputStream.
    *          java.util.zip只支持UTF-8,Ant里面可以指定編碼.
    *  方法2、使用Apache Ant里提供的zip工具。
    *          不使用java.util.zip的包,把ant.jar放到classpath中.
    *          程序中使用import org.apache.tools.zip.*;
    *
    *僅供編程學習參考.
    *
    *@author Winty
    *@date   2008-8-3
    *@Usage:
    *   壓縮:java Zip -zip "directoryName"
    *   解壓:java Zip -unzip "fileName.zip"
    */


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

        public Zip(int bufSize){
            this.bufSize = bufSize;
            this.buf = new byte[this.bufSize];
        }
        
        //壓縮文件夾內的文件
        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調用,遞歸完成目錄文件讀取
        private void handleDir(File dir , ZipOutputStream zipOut)throws IOException{
            FileInputStream fileIn;
            File[] files;

            files = dir.listFiles();
        
            if(files.length == 0){//如果目錄為空,則單獨創建之.
                //ZipEntry的isDirectory()方法中,目錄以"/"結尾.
                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;

            try{
                this.zipIn = new ZipInputStream (new BufferedInputStream(new FileInputStream(unZipfileName)));

                while((this.zipEntry = this.zipIn.getNextEntry()) != null){
                    file = new File(this.zipEntry.getName());
                    //System.out.println(file);///

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

                        fileOut = new FileOutputStream(file);
                        while(( this.readedBytes = this.zipIn.read(this.buf) ) > 0){
                            fileOut.write(this.buf , 0 , this.readedBytes );
                        }
                        fileOut.close();
                    }
                    this.zipIn.closeEntry();    
                }
            }catch(IOException ioe){
                ioe.printStackTrace();
            }
        }

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

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

                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 Zip -zip directoryName");
                System.out.println("解壓:java Zip -unzip fileName.zip");
                throw new Exception("Arguments error!");
            }
        }
    }

    文章來源:http://wintys.blog.51cto.com/425414/90872
    posted on 2009-03-18 12:02 天堂露珠 閱讀(901) 評論(0)  編輯  收藏 所屬分類: Java
    主站蜘蛛池模板: 国产男女爽爽爽免费视频| 美女扒开屁股让男人桶爽免费| 免费看搞黄视频网站| 日本亚洲成高清一区二区三区| 国产精品成人69XXX免费视频| 亚洲А∨精品天堂在线| 一级午夜a毛片免费视频| 亚洲日韩在线第一页| 国产福利电影一区二区三区,免费久久久久久久精 | 黄色网址在线免费观看| 国产成人青青热久免费精品| 国产精品日本亚洲777| 亚洲中文字幕无码专区| a毛片免费全部在线播放**| 国产成人麻豆亚洲综合无码精品| 国产成人无码精品久久久免费| 亚洲国产日韩在线视频| 免费成人在线电影| 亚洲人成免费网站| 成人永久免费高清| www成人免费观看网站| 国产亚洲免费的视频看| 99无码人妻一区二区三区免费| 亚洲乱码一二三四区麻豆| 日本成人免费在线| 久青草视频97国内免费影视| 亚洲资源在线视频| 夜夜嘿视频免费看| 特黄特色的大片观看免费视频| 亚洲成A∨人片在线观看不卡| 最近中文字幕国语免费完整| 四虎亚洲精品高清在线观看| 亚洲av无码不卡私人影院| 国产成年无码久久久免费| 久久精品国产亚洲AV蜜臀色欲| 四虎影视精品永久免费网站| 青青草无码免费一二三区| 337P日本欧洲亚洲大胆艺术图| 亚洲国产精品一区二区成人片国内| 在线精品一卡乱码免费| 免费无码又爽又黄又刺激网站|