研究了一下Android上Zip的用法,写了个类把常用的几种方法写了出来

公共方法列表
static List<File>

GetFileList(StringzipFileString, boolean bContainFolder, booleanbContainFile)

取得压缩包中的文件列表(文件夹,文件自选)

zipFileString : 压缩包文件

bContainFolder : 是否包括文件夹

bContainFile : 是否包括文件

static InputStream

UpZip(StringzipFileString, StringfileString)

返回压缩包中的文件InputStream

zipFileString : 压缩包文件

fileString : 要解压的文件名

staticvoid

UnZipFolder(StringzipFileString, StringoutPathString)

解压一个压缩文档 到指定位置

zipFileString : 压缩包文件

outPathString : 要输出的路径

staticvoid

ZipFolder(StringsrcFileString, StringzipFileString)

压缩文件,文件夹

srcFileString : 要压缩的文件,文件夹的路径

zipFileString : 输出压缩包的路径

Java代码
  1. /**
  2. *AndroidZip压缩解压缩
  3. *@authorRen.xia
  4. *@version1.0
  5. *@updated26-七月-201013:04:27
  6. */
  7. publicclassXZip{
  8. publicXZip(){
  9. }
  10. /**
  11. *取得压缩包中的文件列表(文件夹,文件自选)
  12. *@paramzipFileString压缩包名字
  13. *@parambContainFolder是否包括文件夹
  14. *@parambContainFile是否包括文件
  15. *@return
  16. *@throwsException
  17. */
  18. publicstaticjava.util.List<java.io.File>GetFileList(StringzipFileString,booleanbContainFolder,booleanbContainFile)throwsException{
  19. android.util.Log.v("XZip","GetFileList(String)");
  20. java.util.List<java.io.File>fileList=newjava.util.ArrayList<java.io.File>();
  21. java.util.zip.ZipInputStreaminZip=newjava.util.zip.ZipInputStream(newjava.io.FileInputStream(zipFileString));
  22. java.util.zip.ZipEntryzipEntry;
  23. StringszName="";
  24. while((zipEntry=inZip.getNextEntry())!=null){
  25. szName=zipEntry.getName();
  26. if(zipEntry.isDirectory()){
  27. //getthefoldernameofthewidget
  28. szName=szName.substring(0,szName.length()-1);
  29. java.io.Filefolder=newjava.io.File(szName);
  30. if(bContainFolder){
  31. fileList.add(folder);
  32. }
  33. }else{
  34. java.io.Filefile=newjava.io.File(szName);
  35. if(bContainFile){
  36. fileList.add(file);
  37. }
  38. }
  39. }//endofwhile
  40. inZip.close();
  41. returnfileList;
  42. }
  43. /**
  44. *返回压缩包中的文件InputStream
  45. *@paramzipFileString压缩文件的名字
  46. *@paramfileString解压文件的名字
  47. *@returnInputStream
  48. *@throwsException
  49. */
  50. publicstaticjava.io.InputStreamUpZip(StringzipFileString,StringfileString)throwsException{
  51. android.util.Log.v("XZip","UpZip(String,String)");
  52. java.util.zip.ZipFilezipFile=newjava.util.zip.ZipFile(zipFileString);
  53. java.util.zip.ZipEntryzipEntry=zipFile.getEntry(fileString);
  54. returnzipFile.getInputStream(zipEntry);
  55. }
  56. /**
  57. *解压一个压缩文档到指定位置
  58. *@paramzipFileString压缩包的名字
  59. *@paramoutPathString指定的路径
  60. *@throwsException
  61. */
  62. publicstaticvoidUnZipFolder(StringzipFileString,StringoutPathString)throwsException{
  63. android.util.Log.v("XZip","UnZipFolder(String,String)");
  64. java.util.zip.ZipInputStreaminZip=newjava.util.zip.ZipInputStream(newjava.io.FileInputStream(zipFileString));
  65. java.util.zip.ZipEntryzipEntry;
  66. StringszName="";
  67. while((zipEntry=inZip.getNextEntry())!=null){
  68. szName=zipEntry.getName();
  69. if(zipEntry.isDirectory()){
  70. //getthefoldernameofthewidget
  71. szName=szName.substring(0,szName.length()-1);
  72. java.io.Filefolder=newjava.io.File(outPathString+java.io.File.separator+szName);
  73. folder.mkdirs();
  74. }else{
  75. java.io.Filefile=newjava.io.File(outPathString+java.io.File.separator+szName);
  76. file.createNewFile();
  77. //gettheoutputstreamofthefile
  78. java.io.FileOutputStreamout=newjava.io.FileOutputStream(file);
  79. intlen;
  80. byte[]buffer=newbyte[1024];
  81. //read(len)bytesintobuffer
  82. while((len=inZip.read(buffer))!=-1){
  83. //write(len)bytefrombufferattheposition0
  84. out.write(buffer,0,len);
  85. out.flush();
  86. }
  87. out.close();
  88. }
  89. }//endofwhile
  90. inZip.close();
  91. }//endoffunc
  92. /**
  93. *压缩文件,文件夹
  94. *@paramsrcFileString要压缩的文件/文件夹名字
  95. *@paramzipFileString指定压缩的目的和名字
  96. *@throwsException
  97. */
  98. publicstaticvoidZipFolder(StringsrcFileString,StringzipFileString)throwsException{
  99. android.util.Log.v("XZip","ZipFolder(String,String)");
  100. //创建Zip包
  101. java.util.zip.ZipOutputStreamoutZip=newjava.util.zip.ZipOutputStream(newjava.io.FileOutputStream(zipFileString));
  102. //打开要输出的文件
  103. java.io.Filefile=newjava.io.File(srcFileString);
  104. //压缩
  105. ZipFiles(file.getParent()+java.io.File.separator,file.getName(),outZip);
  106. //完成,关闭
  107. outZip.finish();
  108. outZip.close();
  109. }//endoffunc
  110. /**
  111. *压缩文件
  112. *@paramfolderString
  113. *@paramfileString
  114. *@paramzipOutputSteam
  115. *@throwsException
  116. */
  117. privatestaticvoidZipFiles(StringfolderString,StringfileString,java.util.zip.ZipOutputStreamzipOutputSteam)throwsException{
  118. android.util.Log.v("XZip","ZipFiles(String,String,ZipOutputStream)");
  119. if(zipOutputSteam==null)
  120. return;
  121. java.io.Filefile=newjava.io.File(folderString+fileString);
  122. //判断是不是文件
  123. if(file.isFile()){
  124. java.util.zip.ZipEntryzipEntry=newjava.util.zip.ZipEntry(fileString);
  125. java.io.FileInputStreaminputStream=newjava.io.FileInputStream(file);
  126. zipOutputSteam.putNextEntry(zipEntry);
  127. intlen;
  128. byte[]buffer=newbyte[4096];
  129. while((len=inputStream.read(buffer))!=-1)
  130. {
  131. zipOutputSteam.write(buffer,0,len);
  132. }
  133. zipOutputSteam.closeEntry();
  134. }
  135. else{
  136. //文件夹的方式,获取文件夹下的子文件
  137. StringfileList[]=file.list();
  138. //如果没有子文件,则添加进去即可
  139. if(fileList.length<=0){
  140. java.util.zip.ZipEntryzipEntry=newjava.util.zip.ZipEntry(fileString+java.io.File.separator);
  141. zipOutputSteam.putNextEntry(zipEntry);
  142. zipOutputSteam.closeEntry();
  143. }
  144. //如果有子文件,遍历子文件
  145. for(inti=0;i<fileList.length;i++){
  146. ZipFiles(folderString,fileString+java.io.File.separator+fileList[i],zipOutputSteam);
  147. }//endoffor
  148. }//endofif
  149. }//endoffunc
  150. publicvoidfinalize()throwsThrowable{
  151. }
  152. }

更多相关文章

  1. Android多媒体框架初步分析
  2. Android(安卓)Log日志保存到本地并读取
  3. android背景选择器selector用法汇总
  4. android安装包apk文件反编译代码
  5. Android中Gzip使用
  6. 我的Android进阶之旅------>Ubuntu下不能识别Android设备的解决
  7. android的文件系统结构及其引导过程的初步理解
  8. android系统中运行jar文件
  9. NPM 和webpack 的基础使用

随机推荐

  1. PHP登录与防止数据注入实例演示
  2. 板绘初学者应该学什么?板绘入门教程分享
  3. umi 结合 dva 使用
  4. 闭包、访问器属性、类与对象的创建与成员
  5. 递归函数 用户表
  6. 12月28日圣杯布局(grid版)
  7. 【北亚数据恢复】EMC Unity 400存储误操
  8. 12月27日媒体查询作业
  9. 开发常用镜像站 - 阿里云镜像站
  10. 12月22日弹窗作业