Android知识Android开发Android技术知识

android中压缩文件的解压ZipEntry

2017-05-22  本文已影响217人  Charon_Pluto

在android的应用中,虽然不会经常遇到想要的各种压缩文件进行解压的事情,但是在某些特定的情况下,还是会遇到需要进行压缩包解压的问题。

那么现在就用一个很简单并且本有效果的方法进行对ZipEntry进行封装了。很简单主要就是文件的写入写出的操作。

public class ZipHelper {

public void doZip(String ZIP_PATH,String FOLDER_PATH) {

try{

//获取压缩文件的输入流

ZipInputStream inZip =new ZipInputStream(new FileInputStream(ZIP_PATH));

ZipEntry zipEntry;

String szName ="";

//创建压缩文件的解压位置

File parentfolder =new File(FOLDER_PATH);

//判断文件是否存在,如果不存在报错

if(!parentfolder.exists()) {

Log.e("文件不存在",mkdir "+ FOLDER_PATH +" result "+ parentfolder.mkdirs());

}

//进行压缩文件的解压

while((zipEntry = inZip.getNextEntry()) !=null) {

szName = zipEntry.getName();

//判断解压文件是否是个文件夹

if(zipEntry.isDirectory()) {

szName = szName.substring(0, szName.length() -1);

File folder =new File(FOLDER_PATH + File.separator+ szName);

Log.e("文件不存在","mkdir "+ folder.getAbsolutePath() +" result "+ folder.mkdirs());

}else{

File f =new File(FOLDER_PATH + File.separator+ szName);

int endSep=f.getAbsolutePath().lastIndexOf('/');

File folder=new File(f.getAbsolutePath().substring(0,endSep));

if(!folder.exists())

Log.e("文件不存在","mkdir "+ folder.getAbsolutePath() +" result "+ folder.mkdirs());

if(!f.exists()) {

Log.e("文件不存在","create new file "+ f.getAbsolutePath());

f.createNewFile();

}

//进行文件写入写出的方法

pipe(inZip,new FileOutputStream(f),false);

}

}

inZip.close();

}catch(Exception e) {

StackHelper.printStack(e);

}

}

//进行文件写入写出的具体操作

private void pipe(InputStream in, OutputStream out,boolean closeIn) throws IOException {

byte[] buffer =new byte[2048];

int len =0;

while((len = in.read(buffer)) != -1) {

out.write(buffer,0, len);

}

if(closeIn)

in.close();

out.close();

}

}

上一篇下一篇

猜你喜欢

热点阅读