java 解压zip 文件
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.zip.ZipEntry;
import java.util.zip.ZipFile;
import java.util.zip.ZipInputStream;
public class ZipTool {
public static void main(String[] args) {
//F:/test1 为需要解压文件的根目录
traversDir("F:/test1");
}
/**
* 递归解压根目录下zip文件,解压后删除zip文件。
* @param filename
*/
public static void traversDir(String filename) {
File file = new File(filename);
if (file != null) {
if (file.isDirectory() && file.list().length != 0) {
for (int i = 0; i < file.list().length; i++) {
File f = file.listFiles()[i];
if (!f.isDirectory() && f.getName().endsWith(".zip")) {
System.out.println(f.getPath());
System.out.println(f.getParent());
try {
//解压文件 方法
unZip(f.getPath());
//解压后删除文件 begin
File deFile = new File(f.getPath());
if (f.exists()) {
boolean flag = f.delete();
if (flag) {
System.out.println(f.getPath()
+ " file delete sucess!");
} else {
System.out.println(f.getPath()
+ " file delete fail!");
}
}
//解压后删除文件 end
} catch (Exception e) {
}
} else {
traversDir(f.toString());
}
}
}
}
}
/**
* 解压文件的方法
* @param path
* @throws IOException
*/
public static void unZip(String path) throws IOException {
File file = new File(path);//压缩文件
String savePath = file.getParent();
ZipFile zipFile = new ZipFile(file);//实例化ZipFile,每一个zip压缩文件都可以表示为一个ZipFile
//实例化一个Zip压缩文件的ZipInputStream对象,可以利用该类的getNextEntry()方法依次拿到每一个ZipEntry对象
FileInputStream fileInputStream = new FileInputStream(file);
ZipInputStream zipInputStream = new ZipInputStream(fileInputStream);
ZipEntry zipEntry = null;
while ((zipEntry = zipInputStream.getNextEntry()) != null) {
String fileName = zipEntry.getName();
File temp = new File(savePath + "\\" + fileName);
if (!temp.getParentFile().exists())
temp.getParentFile().mkdirs();
OutputStream os = new FileOutputStream(temp);
//通过ZipFile的getInputStream方法拿到具体的ZipEntry的输入流
InputStream is = zipFile.getInputStream(zipEntry);
int len = 0;
while ((len = is.read()) != -1) {
os.write(len);
}
os.close();
is.close();
}
// 关闭文件流
zipInputStream.close();
fileInputStream.close();
zipFile.close(); //zipFile 文件流关闭, 如果缺少这语句, 在后续的删除文件 会失败,无法删除文件
}
}