(Java)压缩流

在日常的使用中经常会使用 WinRAR 或者 WinZIP 等压缩文件,通过这些软件可以把一个很大的文件进行压缩以方便传输,在Java 中为了减少传输时的数据量也提供了专门的压缩流,可以将文件夹压缩成 ZIP、JAR、GZIP 等文件形式。
在这里插入图片描述

一、ZIP 压缩输入/输出流简介

在 Java 中要实现ZIP的压缩需要导入 java.util.zip包。
在这里插入图片描述
在每一个压缩文件中都会存在多个子文件,那么每一个子文件在 Java 中就使用 ZipEntry表示,ZipEntry 类的常用方法:
在这里插入图片描述
压缩的输入/输出类定义在 java.util.zip 包中,压缩的输入/输出流也属于 InputStream 或 OutputStream 的子类,但是却没有定义在java.io 包中,而是以一种工具类的形式提供,在操作时还需要使用 java.io 包的支持

二、ZipOutputStream 类

如果要完成一个文件或文件夹的压缩,需要使用 ZipOutputStream 类。ZipOutputStream 是 OutputStream 的子类,常用方法:
在这里插入图片描述

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;

public class Test{
    public static void main(String[] args) throws Exception{//抛出所有异常
        //定义要压缩的文件
        File file = new File("D:" + File.separator + "test.txt");
        //定义压缩文件名称
        File zipFile = new File("D:" + File.separator + "test.zip");
        InputStream input = new FileInputStream(file);//定义输入文件流
        ZipOutputStream zipOut = null;//定义压缩输出流
        //实例化压缩输出流对象,并指定压缩文件的输出路径
        zipOut = new ZipOutputStream(new FileOutputStream(zipFile));
        //每一个被压缩的文件都用 ZipEntry 表示,需要为每一个压缩后的文件设置名称
        zipOut.putNextEntry(new ZipEntry(file.getName()));//创建 ZipEntry
        zipOut.setComment("Java");//设置注释
        int temp =0;
        while ((temp = input.read())!=-1){//读取内容
            zipOut.write(temp);//压缩输出内容
        }
        input.close();//关闭输入流
        zipOut.close();//关闭压缩输出流
    }
}

这里将 test.txt 作为源文件,然后使用 ZipOutputStream 将所有的压缩数据输出到 test.zip 文件中,在压缩时采用了边读边写的方式完成
在这里插入图片描述
这里通过使用 ZipOutputStream 读取 ZIP 格式的压缩文件,然后通过 getNextEntry() 方法依次读取出其中每一个 ZipEntry 对象的名称,并通过 ZipFile 类取得每一个 ZIPEntry 的输入流对象,在进行文件输出前,判断其输出文件夹以及文件是否存在,如果不存在则创建。

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

南淮北安

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值