在最近的项目开发中,用到文件的压缩与解压,现总结如下:
package java.zip;
import org.junit.Test;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.util.zip.ZipEntry;
import java.util.zip.ZipInputStream;
import java.util.zip.ZipOutputStream;
/**
*
*/
public class TestZip {
/**
* 测试压缩
*/
@Test
public void testZip() throws Exception {
FileOutputStream fos = new FileOutputStream("d:/arch/1.zip") ;
ZipOutputStream zos = new ZipOutputStream(fos);
byte[] buf = new byte[1024] ;
int len = -1 ;
//第一个条目1.txt
ZipEntry e = new ZipEntry("1.txt");
zos.putNextEntry(e);
FileInputStream fis = new FileInputStream("d:/arch/1.txt");
while((len = fis.read(buf)) != -1){
zos.write(buf,0,len);
}
fis.close();
zos.closeEntry();
//
//2.gif
e = new ZipEntry("2.gif");
zos.putNextEntry(e);
fis = new FileInputStream("d:/arch/2.gif");
while ((len = fis.read(buf)) != -1) {
zos.write(buf, 0, len);
}
fis.close();
zos.closeEntry();
//3.mp3
e = new ZipEntry("3.mp3");
zos.putNextEntry(e);
fis = new FileInputStream("d:/arch/3.mp3");
while ((len = fis.read(buf)) != -1) {
zos.write(buf, 0, len);
}
fis.close();
zos.closeEntry();
//关闭压缩流
zos.close();
}
/**
* 测试解压缩
*/
@Test
public void testUnzip() throws Exception {
FileInputStream fis = new FileInputStream("d:/arch/1.zip");
ZipInputStream zis = new ZipInputStream(fis);
byte[] buf = new byte[1024];
int len = -1;
String dir = "d:/arch/unzip" ;
FileOutputStream fos = null ;
ZipEntry e = null ;
while((e = zis.getNextEntry()) != null){
String ename = e.getName();
fos = new FileOutputStream(new File(dir,ename)) ;
while((len = zis.read(buf))!= -1){
fos.write(buf,0,len);
}
fos.close();
zis.closeEntry();
}
}
}