/**
* zipFileString .zip的文件路径; outPathString解压输出路径
* 只捕捉了异常,没做处理
*/
public static boolean UnZipFolder(String zipFileString, String outPathString) {
try {
//路径的拼接需要注意路径分隔符是否在传入
File zipFile = new File(getSdCardRootDirectory()+zipFileString);
if (!zipFile.exists()){
Log.e("upZipFile","文件不存在");
return false;
}
ZipFile zfile = new ZipFile(zipFile);
Enumeration zList = zfile.entries();
ZipEntry ze = null;
byte[] buf = new byte[1024];
while (zList.hasMoreElements()){
ze = (ZipEntry)zList.nextElement();
if (ze.isDirectory()){
continue;
};
//创建要写入的文件
File newFile = new File(getSdCardRootDirectory()+outPathString);
String[] dirs = ze.getName().split("/");
String substr = null;
for (int i = 0; i < dirs.length-1;i++) {
substr = dirs[i];
newFile=new File(newFile, substr);
}
if(!newFile.exists())newFile.mkdirs();
substr = dirs[dirs.length-1];
newFile=new File(newFile, substr);
//根据文件流,写入文件
OutputStream os=new BufferedOutputStream(new FileOutputStream(newFile));
InputStream is=new BufferedInputStream(zfile.getInputStream(ze));
int readLen=0;
while ((readLen=is.read(buf, 0, 1024))!=-1) {
os.write(buf, 0, readLen);
}
is.close();
os.close();
}
zfile.close();
return true;
}catch (Exception e){
e.printStackTrace();
return false;
}
}
public static String getSdCardRootDirectory(){
if (isSdCardExist()){
return Environment.getExternalStorageDirectory().getAbsolutePath();
}
return null;
}
public static boolean isSdCardExist(){
return Environment.getExternalStorageState()
.equals(android.os.Environment.MEDIA_MOUNTED);
}
Android SD卡中解压.zip文件
最新推荐文章于 2024-07-17 15:04:58 发布