压缩
java提供了对字节流进行压缩和解压缩的类。它们可以在java.util.zip包中被找到,同时也作为jar文件的基 础(jar文件是具有一个清单的zip文件)。
以下的程序采用一个单一的输入文件,并且生成一个压缩了的zip输出文件,该程序带有一个表示输入文件的 入口项。
import java.io.*;
import java.util.zip.*;
public class compress {
public static void doit(string filein, string fileout) {
fileinputstream fis = null;
fileoutputstream fos = null;
try {
fis = new fileinputstream(filein);
fos = new fileoutputstream(fileout);
zipoutputstream zos = new zipoutputstream(fos);
zipentry ze = new zipentry(filein);
zos.putnextentry(ze);
final int bufsiz = 4096;
byte inbuf[] = new byte[bufsiz];
int n;
while ((n = fis.read(inbuf)) != -1)
zos.write(inbuf, 0, n);
fis.close();
fis = null;
zos.close();
fos = null;
}
catch (ioexception e) {
system.err.println(e);
}
finally {
try {
if (fis != null)
fis.close();
if (fos != null)
fos.close();
}
catch (ioexception e) {
}
}
}
public static void main(string args[]) {
if (args.length != 2) {
system.err.println("missing filenames");
system.exit(1);
}
if (args[0].equals(args[1])) {
system.err.println("filenames are identical");
system.exit(1);
}
doit(args[0], args[1]);
}
}
下一个程序正好相反,采用假定只有一个入口项的zip输入文件,并且将该项解压到指定的输出文件:
import java.io.*;
import java.util.zip.*;
public class uncompress {
public static void doit(string filein, string fileout) {
fileinputstream fis = null;
fileoutputstream fos = null;
try {
fis = new fileinputstream(filein);
fos = new fileoutputstream(fileout);
zipinputstream zis = new zipinputstream(fis);
zipentry ze = zis.getnextentry();
&n
闽公网安备 35060202000074号