Java中的流与文件:ZIP文档

        Zip文档通常以压缩格式存储了一个或多个文件,每个zip文档都有一个头,包含诸如每个文件名字和所使用的压缩方法等信息。在Java中,可以使用ZipInputStream来读写ZIP文档。可以通过getNextEntry方法就可以返回一个描述这些项的ZipEntry类型的对象。ZipInputStream的read方法被修改为碰到当前项的结尾时返回-1,然后你必须调用closeEntry来读入下一项。
        ZipInputStream zin = new ZipInputStream(new FileInputStream(zipname));
        ZipEntry entry;
        while((entry = zip.getNextEntry())!=null){
            analyze entry
            read the contents of zin
            zin.closeEntry();
        }
        zin.close();
一、读取zip文件
        当希望读入某个zip项的内容时,我们可能并不想使用原生的read方法,通常,我们将使用某个更能胜任的流过滤器的方法。
        例如,读入ZIP文件内部的一个文本文件,使用以下循环:
        Scanner in = new Scanner(zin);
        while(in.hasNextLine())
            do something with in.nextLine()
        注:在读入单个zip项后,不要关闭zip输入流,也不要将其传递给可能会关闭它的方法。否则,你就不能读入后续的项。

二、写出到zip文件
        当希望写出到zip文件,可以使用ZipOutputStream,而对于你希望放入到Zip文件中的每一项,都应该创建一个ZipEntry对象,并将文件名传递给ZipEntry的构造器,它将设置诸如文件日期和解压缩方法等参数。
        例如:
        FileOutputStream fout = new FileOutputStream("test.zip");
        ZipoutputStream zout = new ZipoutputStream(fout);
        for all files{
            ZipEntry ze = new ZipEntry(filename);
            zout.putNextEntry(ze);
            send data to zout
            zout.closeEntry();
        }
        zout.close();
总结:
        ZIP流是一个能够展示流的抽象化的强大之处的实例。当你读入以压缩格式存储的数据时,不必担心边请求边解压数据的问题,而且Zip格式的字节源并非必须是文件,也可以是来自网络连接的ZIP数据。
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值