免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1386 | 回复: 0
打印 上一主题 下一主题

java 实现压缩与解压缩ZIP [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-08-29 10:29 |只看该作者 |倒序浏览
压缩的

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);

                origin = new BufferedInputStream(fi, BUFFER);

                ZipEntry entry = new ZipEntry(files.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();

                //会把目录作为一个file读出一次,所以只建立目录就可以,之下的文件还会被迭代到。

                if (entry.isDirectory())


               

{

                    new File(filePath + entry.getName()).mkdirs();

                    continue;

                }

                BufferedInputStream bis = new BufferedInputStream(zipFile.getInputStream(entry));

                File file = new File(filePath + entry.getName());

                //加入这个的原因是zipfile读取文件是随机读取的,这就造成可能先读取一个文件

                //而这个文件所在的目录还没有出现过,所以要建出目录来。

                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();

        }

    }

}
               
               
               

本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u1/36510/showart_1154551.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP