ZIP文件的解压缩实质上就是从输入流中读取数据。Java.util.zip包提供了类ZipInputStream来读取ZIP文件,下面的代码段创建了一个输入流来读取ZIP格式的文件;
ZipInputStream in = new ZipInputStream(new FileInputStream(zipFileName));
ZIP输入流打开后,你可以使用getNextEntry方法来读取ZIP文件中的条目数,该方法返回一个ZipEntry对象。如果到达文件的尾部,getNextEntry返回null;
while ((z = in.getNextEntry()) != null) {
}
建立输出流将解压的文档输出
下面的代码只能解压单个文件;
package ZIP文件流;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.util.zip.ZipEntry;
import java.util.zip.ZipInputStream;
/**
* 只能解压单个压缩文件
*/
public class DemoZip {
public static void main(String[] args) {
UpZip("F:\\test.zip", "D:");
System.out.println("压缩完成");
}
/**
* 解压缩zip文件的方法
*
* @param zipFileName
* 要被解压的文件
* @param outputDirectory
* 解压输出路径
*/
public static void UpZip(String zipFileName, String outputDirectory) {
System.out.println("解压单个文件");
try {
ZipInputStream in = new ZipInputStream(new FileInputStream(
zipFileName));
/*
* 获取ZipInputStream中的ZipEntry条目,一个zip文件中可能包含多个ZipEntry,
* 当getNextEntry方法的返回值为null,则代表ZipInputStream中没有下一个ZipEntry,输入流读取完成;
*/
ZipEntry z ;
while ((z = in.getNextEntry()) != null) {
System.out.println( z.getName());
// 创建以zip包文件名为目录名的根目录
File f = new File(outputDirectory);
//创建目录
f.mkdirs();
//是否为目录
if (z.isDirectory()) {
//获取名字
String name = z.getName();
//截取名字
name = name.substring(name.length() );
//文件路径
f = new File(outputDirectory + File.separator + name);
//文件目录
f.mkdirs();
} else {
f = new File(outputDirectory + File.separator + z.getName());
//创建新文件
f.createNewFile();
//输出流
FileOutputStream out = new FileOutputStream(f);
byte[] buff = new byte[1024];
int len;
while ((len = in.read(buff)) != -1) {
out.write(buff, 0, len);
}
out.close();
}
}
in.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
求大神指点怎么解压 压缩文件中的多个文件:::::