以下是Android 和 JAVA的通用解压ZIP文件的方法:
1、解压文件方法
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.util.zip.ZipEntry;
import java.util.zip.ZipInputStream;
import android.util.Log;
public class ZipUtil {
private static final String TAG=ZipUtil.class.getSimpleName();
/**
* 解压文件
* @param zipPath 压缩文件路径
* @param folder 解压目的文件夹(和压缩文件在同一目录下)
*/
public static void UnZip(String zipPath , String folder){
FileInputStream fis=null;
BufferedInputStream bis=null;
FileOutputStream fos=null;
BufferedOutputStream bos=null;
ZipInputStream zis=null;
try {
File inputFile=new File(zipPath);
File outFile =new File(inputFile.getParent()+File.separator+folder);
if(!inputFile.exists()){
Log.e(TAG, "zipPath not exists");
return;
}
fis=new FileInputStream(inputFile);
bis=new BufferedInputStream(fis);
zis=new ZipInputStream(bis);
if(!outFile.exists()){
outFile.mkdirs();
}
ZipEntry zipEntry=null;
while((zipEntry=zis.getNextEntry())!=null){
if(zipEntry.isDirectory()){
File folderFile=new File(outFile.getPath()+File.separator+zipEntry.getName());
if(!folderFile.exists()){
folderFile.mkdirs();
}
}
else{
fos=new FileOutputStream(outFile+File.separator+zipEntry.getName());
bos=new BufferedOutputStream(fos);
byte []b=new byte[1024*10];
int length=-1;
while((length=zis.read(b))!=-1){
bos.write(b, 0, length);
}
bos.flush();
if(fos!=null)
fos.close();
if(bos!=null)
bos.close();
}
}
Log.i(TAG, "UnZip done!");
} catch (Exception e) {
Log.e(TAG, "UnZip Error!");
e.printStackTrace();
}finally{
try {
if(fis!=null)
fis.close();
if(zis!=null){
zis.closeEntry();
zis.close();
}
if(bis!=null)
bis.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
ZipUtil.UnZip("C:\\Users\\Desktop\\test.zip", "test");