android中压缩文件的解压ZipEntry

作者: Charon_Pluto | 来源:发表于2017-05-22 13:57 被阅读217次

    在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();

    }

    }

    相关文章

      网友评论

        本文标题:android中压缩文件的解压ZipEntry

        本文链接:https://www.haomeiwen.com/subject/filbxxtx.html