GZIP接口非常简单,所以如果只有单个数据流需要压缩(而不是一系列不同的数据),那么它就可能是最适当选择。下面是对单个文件进行压缩的例子:
//: GZIPcompress.java
// Uses Java 1.1 GZIP compression tocompress
// a file whose name is passed on thecommand
// line.
import
java.io.*;
import
java.util.zip.*;
public
class
GZIPcompress {
public
static
void
main(String[] args) {
try
{
BufferedReader in =
new
BufferedReader(
new
FileReader(args[0]));
BufferedOutputStream out =
new
BufferedOutputStream(
new
GZIPOutputStream(
new
FileOutputStream(
"test.gz"
)));
System.out.println(
"Writingfile"
);
int
c;
while
((c = in.read()) != -1)
out.write(c);
in.close();
out.close();
System.out.println(
"Readingfile"
);
BufferedReaderin2 =
new
BufferedReader(
new
InputStreamReader(
new
GZIPInputStream(
new
FileInputStream(
"test.gz"
))));
String s;
while
((s = in2.readLine()) !=
null
)
System.out.println(s);
}
catch
(Exception e) {
e.printStackTrace();
}
}
}
///:~
压缩类的用法非常直观——只需将输出流封装到一个GZIPOutputStream或者ZipOutputStream内,并将输入流封装到GZIPInputStream或者ZipInputStream内即可。剩余的全部操作就是标准的IO读写。然而,这是一个很典型的例子,我们不得不混合使用新旧IO流:数据的输入使用Reader类,而GZIPOutputStream的构建器只能接收一个OutputStream对象,不能接收Writer对象。
转载于:https://blog.51cto.com/bbs51it/1096656