这个可以解压 那些包含子目录的zip文件

/**     * 解压缩功能.     * 将zipFile文件解压到folderPath目录下.     * @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();         Log.d("upZipFile", "finishssssssssssssssssssss");         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;     }

记得要在AndroidManifest.xml里添加权限:

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/>

更多相关文章

  1. Android(安卓)Studio使用说明
  2. Android(安卓)xml文件的颜色配置
  3. Connection to https://dl-ssl.google.com refused
  4. 在Ubuntu12.10-32bit上构建、测试WebRTC之Android示例WebRTCDemo
  5. Android获取Apk文件图标信息
  6. Android(安卓)opencv库使用遇到的坑
  7. Android中读取中文字符的文件与文件读取相关
  8. 如何将ADT(eclipse)开发工具锁定到LaucherPad启动器上
  9. Android常用到得方法积累

随机推荐

  1. Android(安卓)读取doc文件
  2. RelativeLayout相对布局中的属性
  3. Android(安卓)ListView 去除边缘阴影、选
  4. Android调用系统短信发送界面并预设接收
  5. Android快速开发不可或缺的11个工具类(下
  6. android camera(一):camera模组CMM介绍
  7. Android(安卓)10 定位问题,获取NMEA(支持5.
  8. Android(安卓)之 下拉框(Spinner)的简单
  9. Android(安卓)多模拟器使用adb shell
  10. Android(安卓)模糊搜索rawquery bind or