Java Zip压缩

Java Zip压缩

Zip、GZIP、Jar

Java API 提供了java.util.zip包和java.util.jar包,前者支持zipgzip格式的压缩、后者支持jar格式的压缩

zip:打包 + 压缩
gzip:压缩,通常配合 tar 使用
jar:打包 + 压缩,与 zip 兼容

Jar文件是什么

JAR 文件(Java归档,英语:Java Archive)是一种软件包文件格式,通常用于聚合大量的Java类文件、相关的元数据和资源(文本、图片等)文件到一个文件,以便分发Java平台应用软件或库。

*.jar*.zip异同
jar 文件基本可以和 zip 格式兼容,可以自由的使用zipunzip工具进行 jar 包的编辑;
唯一不同的是,不能直接使用 zip 工具创建一个新的 jar 包,新建 jar 包只能使用jar命令。

jar 命令和 tar 命令的命令行选项基本一样,因此可以很容易的使用 jar 命令。

META-INF/MANIFEST.MF

目录清单文件,用于存储 jar 包的元数据,通常由 jar 命令自动生成。

清单文件可以只有一行Main-Class: com.zfl9.tools.HashMap用于指定 main() 入口函数所在的类;
如果清单文件中指定了Main-Class条目,并且配置无误,则可以使用java -jar xxx.jar运行该 jar 包。

jar包的两个主要用法
1) java -jar xxx.jar:直接运行带有Main-Class条目的 jar 包;
2) java -cp xxx.jar:将其作为一个 ClassPath 搜索路径,而无需解包。

主要的几个类
InflaterInputStream:基类,解压
DeflaterOutputStream:基类,压缩

ZipFile:Zip 压缩文件
ZipEntry:Zip 压缩实体
ZipInputstream:zip 格式,解压
ZipOutputStream:zip 格式,压缩

JarFile:ZipFile 的子类
JarEntry:ZipEntry 的子类
JarInputStream:ZipInputStream 的子类
JarOutputStream:ZipOutputStream 的子类

GZIPInputStream:gzip 格式,解压(自带Buffer)
GZIPOutputStream:gzip 格式,压缩(自带Buffer)

Zip

ZipFile

ZipEntry

ZipInputStream

ZipOutputStream

例1,压缩、解压缩(仅支持文件,不支持目录):
Zip.java

Unzip.java

运行结果

例2,压缩、解压缩(支持多级目录)
Zip.java

Unzip.java

运行结果

GZIP

GZIPInputStream

GZIPOutputStream

例1,压缩、解压缩(不支持文件夹)
GZIP.java

UnGZIP.java

运行结果

例2,压缩、解压缩(配合tar,支持文件夹)
TarGZIP.java

UnTarGZIP.java

运行结果

Jar

JarFile

JarEntry

JarInputStream

JarOutputStream