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

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

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

    DANCE WITH JAVA

    開(kāi)發(fā)出高質(zhì)量的系統(tǒng)

    常用鏈接

    統(tǒng)計(jì)

    積分與排名

    好友之家

    最新評(píng)論

    java實(shí)現(xiàn)zip與unzip

    jdk提供了Zip相關(guān)的類方便的實(shí)現(xiàn)壓縮和解壓縮。使用方法很簡(jiǎn)單。下邊分別是壓縮和解壓縮的簡(jiǎn)單事例
    1,壓縮的
    import java.io.BufferedInputStream;
    import java.io.BufferedOutputStream;
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileOutputStream;
    import java.util.zip.ZipEntry;
    import java.util.zip.ZipOutputStream;

    public class Zip {
        
    static final int BUFFER = 2048;

        
    public static void main(String argv[]) {
            
    try {
                BufferedInputStream origin 
    = null;
                FileOutputStream dest 
    = new FileOutputStream("E:\\test\\myfiles.zip");
                ZipOutputStream out 
    = new ZipOutputStream(new BufferedOutputStream(
                        dest));
                
    byte data[] = new byte[BUFFER];
                File f 
    = new File("e:\\test\\a\\");
                File files[] 
    = f.listFiles();

                
    for (int i = 0; i < files.length; i++{
                    FileInputStream fi 
    = new FileInputStream(files[i]);
                    origin 
    = new BufferedInputStream(fi, BUFFER);
                    ZipEntry entry 
    = new ZipEntry(files[i].getName());
                    out.putNextEntry(entry);
                    
    int count;
                    
    while ((count = origin.read(data, 0, BUFFER)) != -1{
                        out.write(data, 
    0, count);
                    }

                    origin.close();
                }

                out.close();
            }
     catch (Exception e) {
                e.printStackTrace();
            }

        }

    }


    2,解壓縮的。
    import java.io.BufferedInputStream;
    import java.io.BufferedOutputStream;
    import java.io.File;
    import java.io.FileOutputStream;
    import java.util.Enumeration;
    import java.util.zip.ZipEntry;
    import java.util.zip.ZipFile;

    public class UnZip {
        
    static final int BUFFER = 2048;

        
    public static void main(String argv[]) {
            
    try {
                String fileName 
    = "E:\\test\\myfiles.zip";
                String filePath 
    = "E:\\test\\";
                ZipFile zipFile 
    = new ZipFile(fileName);
                Enumeration emu 
    = zipFile.entries();
                
    int i=0;
                
    while(emu.hasMoreElements()){
                    ZipEntry entry 
    = (ZipEntry)emu.nextElement();
                    
    //會(huì)把目錄作為一個(gè)file讀出一次,所以只建立目錄就可以,之下的文件還會(huì)被迭代到。
                    if (entry.isDirectory())
                    
    {
                        
    new File(filePath + entry.getName()).mkdirs();
                        
    continue;
                    }

                    BufferedInputStream bis 
    = new BufferedInputStream(zipFile.getInputStream(entry));
                    File file 
    = new File(filePath + entry.getName());
                    
    //加入這個(gè)的原因是zipfile讀取文件是隨機(jī)讀取的,這就造成可能先讀取一個(gè)文件
                    
    //而這個(gè)文件所在的目錄還沒(méi)有出現(xiàn)過(guò),所以要建出目錄來(lái)。
                    File parent = file.getParentFile();
                    
    if(parent != null && (!parent.exists())){
                        parent.mkdirs();
                    }

                    FileOutputStream fos 
    = new FileOutputStream(file);
                    BufferedOutputStream bos 
    = new BufferedOutputStream(fos,BUFFER);           
                    
                    
    int count;
                    
    byte data[] = new byte[BUFFER];
                    
    while ((count = bis.read(data, 0, BUFFER)) != -1)
                    
    {
                        bos.write(data, 
    0, count);
                    }

                    bos.flush();
                    bos.close();
                    bis.close();
                }

                zipFile.close();
            }
     catch (Exception e) {
                e.printStackTrace();
            }

        }

    }

    posted on 2007-08-09 09:33 dreamstone 閱讀(20728) 評(píng)論(8)  編輯  收藏 所屬分類: jdk相關(guān)

    評(píng)論

    # re: java實(shí)現(xiàn)zip與unzip 2007-08-10 14:32 wpf

    你這個(gè)應(yīng)該是不支持中文的吧  回復(fù)  更多評(píng)論   

    # re: java實(shí)現(xiàn)zip與unzip 2007-08-10 15:28 dreamstone

    這個(gè)只是個(gè)簡(jiǎn)單的demo,想支持中文,變通一下就可以  回復(fù)  更多評(píng)論   

    # re: java實(shí)現(xiàn)zip與unzip 2007-09-18 16:52 yondchang

    多謝多謝
    PS:

    import java.util.zip.ZipEntry;
    import java.util.zip.ZipOutputStream;
    改成
    import org.apache.tools.zip.*;

    然后把
    Enumeration emu = zipFile.entries();
    改成
    Enumeration emu = zipFile.getEntries();
    就可以支持中文了  回復(fù)  更多評(píng)論   

    # re: java實(shí)現(xiàn)zip與unzip 2007-11-07 17:09 siyuan

    樓主可以發(fā)個(gè)包給我嗎?
    org.apache.tools包在網(wǎng)上沒(méi)有找到
    我的郵箱是592262029@qq.com  回復(fù)  更多評(píng)論   

    # re: java實(shí)現(xiàn)zip與unzip 2008-03-27 23:43 fenixshadow

    完全使用ant會(huì)更簡(jiǎn)單:
    static public void unzip(String zipFilepath, String destinationDir) {

    final class Expander extends Expand {
    public Expander() {
    project = new Project();
    project.init();
    taskType = "unzip";
    taskName = "unzip";
    target = new Target();
    }
    }
    Expander expander = new Expander();
    expander.setSrc(new File(zipfile));
    expander.setDest(new File(destdir));
    expander.execute();
    }  回復(fù)  更多評(píng)論   

    # re: java實(shí)現(xiàn)zip與unzip 2008-08-04 17:41 Shit

    收藏了  回復(fù)  更多評(píng)論   

    # re: java實(shí)現(xiàn)zip與unzip 2010-09-07 11:10 Ring~Lee

    第一個(gè)壓縮方法,只支持e:\\test\\a\\下全是文件的場(chǎng)景。
    如果e:\\test\\a\\下還有子文件夾,就不支持了。  回復(fù)  更多評(píng)論   

    # re: java實(shí)現(xiàn)zip與unzip[未登錄](méi) 2012-08-27 11:32 貝貝

    很好。。  回復(fù)  更多評(píng)論   

    主站蜘蛛池模板: 99国产精品免费观看视频| 亚洲色大成WWW亚洲女子| 久久精品国产亚洲av麻| 中文字幕精品亚洲无线码一区| 亚洲第一黄色网址| 免费人成在线观看视频播放 | 国产免费MV大全视频网站| 免费看内射乌克兰女| 日韩大片免费观看视频播放| 四虎一区二区成人免费影院网址| 日日狠狠久久偷偷色综合免费| 国产精品hd免费观看| 日本三级在线观看免费| 久久精品视频免费播放| h在线观看视频免费网站| 波多野结衣中文字幕免费视频| 国产一精品一AV一免费孕妇| 免费无码又爽又刺激高潮| 国产一区二区三区在线观看免费 | 无码人妻久久一区二区三区免费丨 | 最新亚洲卡一卡二卡三新区| 亚洲国产成人久久精品软件| 免费一级毛片在线播放视频免费观看永久 | 巨胸喷奶水视频www免费视频| 日本视频在线观看永久免费| 我们的2018在线观看免费高清 | 韩国免费a级作爱片无码| 亚洲免费视频在线观看| 青娱分类视频精品免费2| 日本成人在线免费观看| 亚洲区日韩区无码区| 亚洲国产精品lv| 国产成人精品日本亚洲网址| 精品视频免费在线| 久久免费香蕉视频| 亚洲成人免费网站| 日韩高清在线免费看| 亚洲自偷自偷在线制服| 亚洲毛片基地日韩毛片基地| 国产亚洲漂亮白嫩美女在线| 国产成人无码区免费网站|