在上一篇文章中讲到了如何使用JDK自带的方法进行文件压缩,有了压缩自然也会有解压。同样的,网上很多方法都是使用了第三方的jar包来进行文件解压,本着能简单就简单的原则,如果能用JDK自带的方法进行解压文件岂不是更好?在这里我贴一下文件解压代码。希望能帮助有需要的小伙伴。。。
/***
* 解压zip文件
* @param srcPath zip文件地址
* @param destPath 解压后存放的地址
* @param includeZipFileName 是否包含zip文件名
*/
public static void unZip(String srcPath ,String destPath,boolean includeZipFileName){
try {
ZipInputStream Zin=new ZipInputStream(new FileInputStream(
srcPath));
BufferedInputStream Bin=new BufferedInputStream(Zin);
if(includeZipFileName){
String zipFileName = srcPath.substring(srcPath.lastIndexOf(File.separator));
zipFileName = zipFileName.substring(0, zipFileName.indexOf("."));
destPath += zipFileName;
}
File Fout=null;
ZipEntry entry;
try {
while((entry = Zin.getNextEntry())!=null){
if(entry.isDirectory())continue;
Fout=new File(destPath,entry.getName());
if(!Fout.exists()){
(new File(Fout.getParent())).mkdirs();
}
FileOutputStream out=new FileOutputStream(Fout);
BufferedOutputStream Bout=new BufferedOutputStream(out);
int b;
while((b=Bin.read())!=-1){
Bout.write(b);
}
Bout.close();
out.close();
}
Bin.close();
Zin.close();
} catch (IOException e) {
e.printStackTrace();
}
} catch (FileNotFoundException e) {
e.printStackTrace();
}
}
使用方法也很简单的。。
unZip("E:\\filecopy\\appwww.zip","E:\\filecopy",false);
注意传入文件名的路径一定要是 “\\” 不然会出错的。。