==================2015/8/18==========================
压缩
压缩类属于InputStream和OutputStream继承层次结构的一部分。因为压缩类库是按字节方式而不是字符方式处理的。
压缩类
|
功能
|
DeflaterOutputStream
|
压缩类的基类
|
ZipOutputStream
|
(一个DeflaterOutputStream)用于将数据压缩成Zip文件格式
|
GZIPOutputStream
|
(一个DeflaterOutputStream)用于将数据压缩成GZip文件格式
|
InflaterInputStream
|
解压缩类的基类
|
ZipInputStream
|
(一个InflaterInputStream)用于解压缩Zip文件格式的数据
|
GZIPInputStream
|
(一个InflaterInputStream)用于解压缩GZip文件格式的数据
|
CheckedInputStream
|
GetCheckSum()为任何InputStream产生校验和(不仅是解压缩)
|
CheckedOutputStream
|
GetCheckSum()为任何OutputStream产生校验和(不仅是压缩)
|
1.对单个数据流(而不是一系列互异数据)进行压缩,GZIP是比较合适的选择。它的使用非常直观——直接将输出流封装成GZIPOutputStream和ZipOutputStream,并将输入流封装成GZIPInputStream或ZipInputStream即可。
BufferedReader in = new BufferedReader(new FileReader(args[0]));
BufferedOutputStream
out = new BufferedOutputStream(new GZIPOutputStream(new FileOutputStream("test.gz")));
System.out.println("Writing file");
int c;
while ((c = in.read()) != -1) {
out.write(c);
}
in.close();
out.close();
|
WinZip校验功能,该功能主要是用于直接将某个ZIP压缩包解压、释放到用户指定的临时文件夹中,然后再自动在Windows9X的开始菜单中为这些释放后的文件建立对应的快捷方式,这样用户就可以方便的对压缩包中的文件进行安装、运行、调试了。
2.Checksum有两个类型:Adler32(快一些) 和 CRC32(慢一些,当更准确)。
3.对于每一个要加入压缩档案的文件,都必须调用putNextEntry(),并将其传递给一个ZipEntry对象。ZipEntry对象包含了一个功能很广泛的接口,允许你获取和设置Zip文件内该特定项上所有可利用的数据:名字、压缩的和未压缩的文件大小、日期、CRC校验和、额外字段数据、注释、压缩方法以及它是否是一个目录入口等等。
4.解压缩文件有两个方法,a.
ZipInputStream提供了一个getNextEntry()方法返回下一个ZipEntry; b.利用ZipFile对象读取文件,该对象有一个entries()方法用来向ZipEntries返回一个Enumeration(枚举)。
5.Java档案文件
Zip格式也被应用于JAR(Java Archive,
Java档案文件)文件格式中。JAR文件在涉及因特网应用的时候非常有用。
如果不采用JAR文件,Web浏览器在下载构成一个应用的所有文件时必须重复多次请求Web服务器;而且所有这些文件都是未经压缩的。如果将所有这些文件合并到一个JAR文件中,只需向远程服务器发出一次请求即可。同时,由于采用了压缩技术,可以使传输时间更短。另外,处于安全的考虑,JAR文件中的每个条目都可以加上数字化签名。
Sun的JDK自带的jar程序可根据我们的选择自动压缩文件。可以用命令行的形式调用它,如下:
jar [options]
destination [manifest] inputfile(s)
|
其中,options只是一个字母集合,不必输入“-”或其它标识符。
Option
|
Description
|
c
|
Creates a new jar file.
|
t
|
Updates an existing jar file.
|
x
|
Extracts files from an existing jar file.
|
t
|
Lists the contents of a jar file
|
f
|
Indicates
that the jar file is specified as an argument. You almost always want to use
this option.
|
v
|
Verbose output. This option tells
the jar command to display extra information while it works.
|
O
|
Doesn’t compress files when it adds
them to the archive. This option isn’t used much.
|
m
|
Specifies that a manifest file is provided.
It’s listed as the next argument following the jar file.
|
M
|
Specifies that a manifest file should not be
added to the archive. This option is rarely used.
|
使用示例如:
创建一个名为myJarFile.jar的JAR文件,该文件包含当前目录中的所有类文件,以及自动产生的清单文件:
|
jar cf myJarFile.jar *.class
|
添加一个名为myManifestFile.mf的用户自建清单文件:
|
jar cf myJarFile.jar myManifestFile.mf
*.class
|
产生myJarFile.jar内所有文件的一个目录表:
|
jar tf myJarFile.jar
|
No comments:
Post a Comment