一、文件的压缩流和解压流
1、为什么需要使用压缩文件
文件压缩使用场景: 在文件上传或下载中需要操作多个文件时,如果一个一个复制需要花较长时间,而且比较繁琐,javaAPI提供一种压缩/解压文件方式,可以将多个文件打包成一个文件(.zip)
包: java.util.zip
常用类: ZipEntry: 表示压缩文件中的每一个实体文件
ZipFile: 表示压缩文件对象
ZipOutputStream: 表示压缩文件输出流,用于将普通文件写出到zip文件中
ZipInputStream: 表示解压文件的输入流,用于读zip文件中的每一个实体ZipEntry
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-c81vT4Ii-1604883598475)(assets/4.png)]
这里的abcd.txt就是一个ZipEntry
2、压缩文件步骤
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-48FroStS-1604883598479)(assets/压缩.png)]
a、创建需要压缩文件的输入流(InputStream )
b、创建压缩包所在的路径,并指定压缩文件名,同时创建ZipOutputStream输出流
c、将文件对象 添加到 ZipOutputStream中的实体中(也可以指定压缩后的实体名称)
d、文件复制
e、关闭流
public static void main(String[] args) throws IOException {
// 1、创建文件对象
File file = new File("d:/小众网站.txt");
// 2、创建文件的输入流
FileInputStream fis = new FileInputStream(file);
// 3、创建文件压缩流(输出流)
ZipOutputStream zos = new ZipOutputStream(
new FileOutputStream("d:/myfile.zip"));
// 给压缩包中添加文件,并可自定义文件名
zos.putNextEntry(new ZipEntry("小众网站.txt "));
// 给压缩包设置注释
zos.setComment("这是压缩包的注释。。。。");
// 文件复制
int len = 0;
byte [] b = new byte[1024];
while( (len = fis.