android zip解压缩(含有子目录)

原创 2013年12月02日 11:54:17

note: 如果目录中含有中文名称, 要用substr = new String(substr.getBytes("8859_1"), "GB2312");这样的语句转换,否则为乱码:

/**
        * 解压缩功能.
        * 将ZIP_FILENAME文件解压到ZIP_DIR目录下.
        * @throws Exception
        */
        public int upZipFile(File zipFile, String folderPath)throws ZipException,IOException {
        //public static void upZipFile() throws Exception{
                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()){
                                Log.d("upZipFile", "ze.getName() = "+ze.getName());
                                String dirstr = folderPath + ze.getName();
                                //dirstr.trim();
                                dirstr = new String(dirstr.getBytes("8859_1"), "GB2312");
                                Log.d("upZipFile", "str = "+dirstr);
                    File f=new File(dirstr);
                    f.mkdir();
                                continue;
                        }
                        Log.d("upZipFile", "ze.getName() = "+ze.getName());
                        OutputStream os=new BufferedOutputStream(new FileOutputStream(getRealFileName(folderPath, ze.getName())));
                        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 0;
        }

   /**
        * 给定根目录,返回一个相对路径所对应的实际文件名.
        * @param baseDir 指定根目录
        * @param absFileName 相对路径名,来自于ZipEntry中的name
        * @return java.io.File 实际的文件
        */
        public static File getRealFileName(String baseDir, String absFileName){
                String[] dirs=absFileName.split("/");
                File ret=new File(baseDir);
                String substr = null;
                if(dirs.length>1){
                        for (int i = 0; i < dirs.length-1;i++) {
                                substr = dirs[i];
                                try {
                                        //substr.trim();
                                        substr = new String(substr.getBytes("8859_1"), "GB2312");

                                } catch (UnsupportedEncodingException e) {
                                        // TODO Auto-generated catch block
                                        e.printStackTrace();
                                }
                                ret=new File(ret, substr);

                        }
                        Log.d("upZipFile", "1ret = "+ret);
                        if(!ret.exists())
                                ret.mkdirs();
                        substr = dirs[dirs.length-1];
                        try {
                                //substr.trim();
                                substr = new String(substr.getBytes("8859_1"), "GB2312");
                                Log.d("upZipFile", "substr = "+substr);
                        } catch (UnsupportedEncodingException e) {
                                // TODO Auto-generated catch block
                                e.printStackTrace();
                        }

                        ret=new File(ret, substr);
                        Log.d("upZipFile", "2ret = "+ret);
                        return ret;
                }

             return ret;
        }


android zip解压缩(含有子目录)

/**         * 解压缩功能. * 将ZIP_FILENAME文件解压到ZIP_DIR目录下. * @throws Exception */ ...
  • QQzyb
  • QQzyb
  • 2013年10月16日 10:23
  • 947

Android 文件下载与解压缩

DownLoaderTask.java [java] view plaincopy package com.johnny.testzipanddow...
  • hopehe888999
  • hopehe888999
  • 2014年02月10日 13:19
  • 5152

ZipHelper压缩解压缩

需要引用 DLL-ICSharpCode.SharpZipLib   下载地址http://download.csdn.net/download/cleopard/8304539         us...
  • sinat_15155817
  • sinat_15155817
  • 2016年12月27日 21:32
  • 112

Android文件解压工具类

这是Android文件解压工具类。如果需要含有子目录的文件解压方法,这是地址:Android含有子目录解压方法 /** * 不含子目录的文件压缩 * * @param zipFile ...
  • ss8860524
  • ss8860524
  • 2017年01月03日 19:45
  • 437

java把文件夹(目录)子文件夹打成zip文件

需要两个jar包: commons-compress-1.9.jar commons-io-2.2.jar package net.zkbc.mp.test; import java....
  • yx511500623
  • yx511500623
  • 2015年07月31日 17:13
  • 845

android解压ZIP文件

在AndroidManifest.xml里添加权限:      工具类: public class ZIP { public ZIP(){ } /** * D...
  • kaixinbingju
  • kaixinbingju
  • 2013年03月13日 14:37
  • 21720

【Java】IO操作之使用zip包压缩和解压缩文件

Java API中的import java.util.zip.*;包下包含了Java对于压缩文件的所有相关操作。 我们可以使用该包中的方法,结合IO中的相关知识,进行文件的压缩和解压缩相关操作。 ...
  • oYunTaoLianWu
  • oYunTaoLianWu
  • 2013年08月02日 01:52
  • 2396

java zip API实现压缩和解压缩zip包

package zip; import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.i...
  • stalwartwill
  • stalwartwill
  • 2013年12月17日 11:51
  • 40270

Android 解压文件工具类

import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.File; import...
  • l349440843
  • l349440843
  • 2015年12月25日 12:28
  • 1793

C++ zip文件的解压与压缩

1、下载解压文件的库http://download.csdn.net/detail/yimengchenxi/8887025 2、在项目中添加相关文件 在Debug中添加zlib1.dll文件,其...
  • yimengchenxi
  • yimengchenxi
  • 2015年07月10日 13:02
  • 8346
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:android zip解压缩(含有子目录)
举报原因:
原因补充:

(最多只允许输入30个字)