package com;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.util.zip.ZipEntry;
import java.util.zip.ZipInputStream;
import java.util.zip.ZipOutputStream;
import org.junit.jupiter.api.Test;
public class TestJyZip {
/**
* 循环向zos中添加条目
*/
public static void addFile(ZipOutputStream zos,String path) throws Exception{
//动态获取文件名称
File f =new File(path);
//构建一个新条目,“3.png” 只是个名字
zos.putNextEntry(new ZipEntry(f.getName()));
//快速读取文件流,输入流
FileInputStream fis =new FileInputStream(path);
//定义字节
byte[] bytes = new byte[fis.available()];
//写入bytes字节
fis.read(bytes);
//关闭输入流
fis.close();
//写入字节数据
zos.write(bytes);
//关闭条目流
zos.closeEntry();
}
/**
* 压缩文件
* @throws Exception
*/
@Test
public static void znzip() throws Exception {
//文件输出流
FileOutputStream fos = new FileOutputStream("E:/img/xx.zip");
//压缩流
ZipOutputStream zos = new ZipOutputStream(fos);
//字符串数组
String[] arr= {"E:/img/1.txt","E:/img/2.jpg"};
for(String s :arr) {
addFile(zos,s);
}
//关闭压缩流
zos.close();
//关闭文件输出流
fos.close();
System.out.println("压缩文件-执行完毕");
}
/**
* 解压缩
*/
@Test
public void unzip() throws Exception{
//文件输入流
FileInputStream fis = new FileInputStream("E:/img/xx.zip");
//压缩输入流
ZipInputStream zis =new ZipInputStream(fis);
ZipEntry entry=null;
byte[] buf=new byte[1024];
int len =0;
while ((entry=zis.getNextEntry()) != null) {
//获取文件名称
String name = entry.getName();
FileOutputStream fos =new FileOutputStream("E:/img/unzip/"+name);
//判断字节最后一位
while((len = zis.read(buf))!=-1) {
fos.write(buf,0,len);
}
//关闭流
fos.close();
}
//关闭流
zis.close();
fis.close();
System.out.println("解压文件-执行完毕");
}
}
效果图