Java里面的内置的ZIP文件压缩流具有很强的功能,能进行ZIP的压缩请求,下面我们来看利用ZIP流实现对文件的压缩和读取
package com.bird.thinking;
import java.io.BufferedOutputStream;
import java.io.BufferedReader;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.util.Enumeration;
import java.util.zip.Adler32;
import java.util.zip.CheckedOutputStream;
import java.util.zip.ZipEntry;
import java.util.zip.ZipFile;
import java.util.zip.ZipOutputStream;
/**
* @use 用ZIP进行多文件保存
* @author Bird
*
*/
public class ZipCompress {
public static void creatIndex() throws Exception{//构建压缩文件
FileOutputStream f = new FileOutputStream("d://bird.zip");//构建文件输出流
CheckedOutputStream csum = new CheckedOutputStream(f,new Adler32());//计算和校验文件Adler32()比较快一点
ZipOutputStream zos = new ZipOutputStream(csum);//压缩文件输出流
BufferedOutputStream out = new BufferedOutputStream(zos);//构建缓冲区
zos.setComment("A Test of java Zipping");//添加注释
BufferedReader in = new BufferedReader(new FileReader("d://book.xml"));//读取磁盘的一个文件
zos.putNextEntry(new ZipEntry("book.xml"));//设置压缩包里面的内容
int c ;
while((c = in.read()) != -1){
out.write(c);
}
in.close();
out.flush();
out.close();
}
public static void readIndex() throws Exception{//读取ZIP文件
ZipFile zf = new ZipFile("d://bird.zip");
Enumeration<? extends ZipEntry> e = zf.entries();
while(e.hasMoreElements()){
ZipEntry ze2 = (ZipEntry)e.nextElement();
System.out.println(ze2.getName());
}
}
public static void main(String[] args) throws Exception{
readIndex();
}
}