解压缩流/压缩流

1.解压缩流是读取压缩包中的文件,压缩流是把文件中的数据写到压缩包中

/图片

zipInputStream:解压缩流 。 zipOutputStream:压缩流

2.压缩包里面的每一个文件(文件或者文件夹),在JAVA中都是一个ZipEntry对象

所以解压的本质是把压缩包里的每个ZipEntry对象按照层级拷贝到本地另一个文件中

压缩的本质是把每一个文件或者文件夹看成zipEntry对象放到压缩包中

JAVA中只能识别zip类型的压缩包

3.zip.getNextEntry

获取压缩包里面的entry对象,调用一次获取一个。按字母表顺序获取。获取不了返回null。
图片

文件压缩有问题,压缩后,文件里面的内容都消失了-->你个sb文本输入后不保存,内容怎么压缩

4.IllegalArgumentException(zip文件损坏,不合法):

1.文件本身有损
2.文件夹或文本里面有中文路径或者特殊字符,且压缩时Windows默认使用GBK编码没使用UTF-8编码
3.读取zip文件的FileInputSteam没有创建成功

5.图片

为什么zos.write将数据写到ee.txt中:

首先在创建了ZipEntry对象后,对象代表了ee.txt 文件

其次zos.putNextEntry(entry)将zipEntry与ZipOutputStream绑定,此时zos的后续写入操作都会被归属到ee.txt 文件

最后zos.closeEntry()

6.zos.closeEntry()

它的作用是关闭当前与ZipOUtputStream绑定的ZIpEntry对象,同时刷新ZipOUtputStream的缓冲区防止数据遗漏,
同时让ZipOUtputStream可以接收下一个ZipEntry对象

7.ZipEntry entry=new ZipEntry()

()里的内容表示压缩包里的路径,
如果你写ee.txt他会给你创建一个名称为ee.txt的文本
如果你写aaa\bbb\a.txt,他会按层级给你创建一个aaa文件夹,里面创建一个bbb文件夹,再在bbb里面创建一个a.txt文本

posted @ 2025-12-30 23:59  水水日  阅读(0)  评论(0)    收藏  举报