[重学Java基础][Java IO流][Part.15]压缩流

[重学Java基础][Java IO流][Part.15]压缩流

Java 压缩流

简介

Java官方提供了对三种压缩文件格式的支持 分别是ZIP GZIP JAR格式

  • ZIP常用操作类
    ZipEntry Zip压缩实体 指一个Zip压缩包内的一个被压缩文件
    ZipFile Zip文件 指一个Zip压缩包
    ZipInputStream Zip压缩包输入流 用于读入一个Zip压缩文件到程序
    ZipOutputStream Zip压缩包输出流 用于写出一个Zip压缩文件到外部

  • GZIP常用操作类
    GZipInputStream GZip压缩包输入流 用于读入一个GZip压缩文件到程序
    GZipOutputStream GZip压缩包输出流 用于写出一个GZip压缩文件到外部

  • JAR常用操作类
    JarEntry Jar压缩实体 指一个Jar压缩包内的一个被压缩文件
    JarFile Jar文件 指一个Jar压缩包
    JarInputStream Jar压缩包输入流 用于读入一个Jar压缩文件到程序
    JarOutputStream Jar压缩包输出流 用于写出一个Jar压缩文件到外部

三中压缩格式的比较

  • GZIP: 如果只有单个数据流需要压缩(而不是一系列不同的数据),那么它就可能是最适当选择。
  • ZIP: 它可以方便地保存多个文件到一个压缩包中,可以追加和修改压缩包中的文件,官方提供了一个独立的类来简化对Zip文件的读操作
  • JAR: 和ZIP基本一样 但是为Java文件专门定制了一些方法和属性 如果是打包Java程序使用Jar

Zip 压缩流

java.util.zip.ZipEntry

ZipEntry Zip压缩实体 指一个Zip压缩包内的一个被压缩文件

压缩时 先建立一个zipentry 然后写入数据
压缩多个文件时 循环调用以上步骤

ZipOutputStream 用于写出一个Zip压缩文件到外部
示例

  • 压缩多个文件到一个压缩包中
        //压缩文件输出的路径
        FileOutputStream fileOutputStream = new FileOutputStream("F:\\zipoutput.zip");
        ZipOutputStream zipOutputStream = new ZipOutputStream(fileOutputStream);

        //设置压缩等级 一共0~9级 级别越高压缩效果越好 当然性能耗费越多    zipOutputStream.setLevel(Deflater.BEST_COMPRESSION);
//设置是进行压缩还是仅仅打包存储 两个级别 // STORED(0) 仅打包用于存储 //DEFLATED(8) 进行压缩 zipOutputStream.setMethod(ZipEntry.DEFLATED);

        //待压缩文件夹的路径
        File tocompressDty = new File("E:\\图片\\截图");

        for (File file : tocompressDty.listFiles()) {

            //putNextEntry方法向zip压缩输出流中添加了一个实体并设置了实体名 
            此处就设置为了被压缩文件的名
            zipOutputStream.putNextEntry(new ZipEntry(file.getName()));

            //待压缩文件读入内存
            FileInputStream fileInputStream = 
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值