Android 压缩解压zip文件
2013-12-03 18:23
459 查看
上次写了个解压缩功能,但有局限性,比如压缩文件xx.zip 里包括子目录的情况下,执行上次解压缩的功能就不能实现我们想要的效果,于是在网上参考了一下java的解压缩功能。对上次解压缩zip功能进行了修改。
现在也可以解压 那些包含子目录的zip文件。
记得要在AndroidManifest.xml里添加权限:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/>
参考文章:http://orz.iteye.com/blog/110842
【原文:/article/4814053.html】
现在也可以解压 那些包含子目录的zip文件。
1 /** 2 * 解压缩功能. 3 * 将zipFile文件解压到folderPath目录下. 4 * @throws Exception 5 */ 6 public int upZipFile(File zipFile, String folderPath)throws ZipException,IOException { 7 //public static void upZipFile() throws Exception{ 8 ZipFile zfile=new ZipFile(zipFile); 9 Enumeration zList=zfile.entries(); 10 ZipEntry ze=null; 11 byte[] buf=new byte[1024]; 12 while(zList.hasMoreElements()){ 13 ze=(ZipEntry)zList.nextElement(); 14 if(ze.isDirectory()){ 15 Log.d("upZipFile", "ze.getName() = "+ze.getName()); 16 String dirstr = folderPath + ze.getName(); 17 //dirstr.trim(); 18 dirstr = new String(dirstr.getBytes("8859_1"), "GB2312"); 19 Log.d("upZipFile", "str = "+dirstr); 20 File f=new File(dirstr); 21 f.mkdir(); 22 continue; 23 } 24 Log.d("upZipFile", "ze.getName() = "+ze.getName()); 25 OutputStream os=new BufferedOutputStream(new FileOutputStream(getRealFileName(folderPath, ze.getName()))); 26 InputStream is=new BufferedInputStream(zfile.getInputStream(ze)); 27 int readLen=0; 28 while ((readLen=is.read(buf, 0, 1024))!=-1) { 29 os.write(buf, 0, readLen); 30 } 31 is.close(); 32 os.close(); 33 } 34 zfile.close(); 35 Log.d("upZipFile", "finishssssssssssssssssssss"); 36 return 0; 37 } 38 39 /** 40 * 给定根目录,返回一个相对路径所对应的实际文件名. 41 * @param baseDir 指定根目录 42 * @param absFileName 相对路径名,来自于ZipEntry中的name 43 * @return java.io.File 实际的文件 44 */ 45 public static File getRealFileName(String baseDir, String absFileName){ 46 String[] dirs=absFileName.split("/"); 47 File ret=new File(baseDir); 48 String substr = null; 49 if(dirs.length>1){ 50 for (int i = 0; i < dirs.length-1;i++) { 51 substr = dirs[i]; 52 try { 53 //substr.trim(); 54 substr = new String(substr.getBytes("8859_1"), "GB2312"); 55 56 } catch (UnsupportedEncodingException e) { 57 // TODO Auto-generated catch block 58 e.printStackTrace(); 59 } 60 ret=new File(ret, substr); 61 62 } 63 Log.d("upZipFile", "1ret = "+ret); 64 if(!ret.exists()) 65 ret.mkdirs(); 66 substr = dirs[dirs.length-1]; 67 try { 68 //substr.trim(); 69 substr = new String(substr.getBytes("8859_1"), "GB2312"); 70 Log.d("upZipFile", "substr = "+substr); 71 } catch (UnsupportedEncodingException e) { 72 // TODO Auto-generated catch block 73 e.printStackTrace(); 74 } 75 76 ret=new File(ret, substr); 77 Log.d("upZipFile", "2ret = "+ret); 78 return ret; 79 } 80 return ret; 81 }
记得要在AndroidManifest.xml里添加权限:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/>
参考文章:http://orz.iteye.com/blog/110842
【原文:/article/4814053.html】
相关文章推荐
- Android--下载zip压缩文件并解压
- android压缩解压zip文件
- Android 压缩解压zip文件
- Android--下载zip压缩文件并解压
- Android 压缩解压zip文件
- Android解压sd卡里面Zip压缩文件
- Android 下载zip压缩文件并解压
- Android实现下载zip压缩文件并解压的方法(附源码)
- android通过org.apache.tools.zip解压zip压缩文件,支持中文名
- Android 压缩解压zip文件
- Android zip文件压缩解压缩
- Zip压缩文件 与 解压
- android解压ZIP压缩包文件
- Win10如何使用自带压缩、解压zip压缩文件功能
- Android 解压zip文件
- iOS学习笔记之文件的压缩和解压(zip)
- 使用Python3解压gz、tar、tgz、zip、rar五种格式的压缩文件例子
- java zip和rar压缩文件的解压
- android的system.img文件的解压和压缩工具的下载地址
- android 进行多文件压缩处理格式zip