package com.su.mywifi.util;/**  * Android Zip压缩解压缩  * @author Ren.xia  * @version 1.0  * @updated 26-七月-2010 13:04:27  */  public class XZip {        public XZip(){        }            /**      * 取得压缩包中的 文件列表(文件夹,文件自选)      * @param zipFileString     压缩包名字      * @param bContainFolder    是否包括 文件夹      * @param bContainFile      是否包括 文件      * @return      * @throws Exception      */      public static java.util.List<java.io.File> GetFileList(String zipFileString, boolean bContainFolder, boolean bContainFile)throws Exception {                    android.util.Log.v("XZip", "GetFileList(String)");                    java.util.List<java.io.File> fileList = new java.util.ArrayList<java.io.File>();          java.util.zip.ZipInputStream inZip = new java.util.zip.ZipInputStream(new java.io.FileInputStream(zipFileString));          java.util.zip.ZipEntry zipEntry;          String szName = "";                    while ((zipEntry = inZip.getNextEntry()) != null) {              szName = zipEntry.getName();                        if (zipEntry.isDirectory()) {                            // get the folder name of the widget                  szName = szName.substring(0, szName.length() - 1);                  java.io.File folder = new java.io.File(szName);                  if (bContainFolder) {                      fileList.add(folder);                  }                        } else {                  java.io.File file = new java.io.File(szName);                  if (bContainFile) {                      fileList.add(file);                  }              }          }//end of while                    inZip.close();                    return fileList;      }      /**      * 返回压缩包中的文件InputStream      * @param zipFileString     压缩文件的名字      * @param fileString    解压文件的名字      * @return InputStream      * @throws Exception      */      public static java.io.InputStream UpZip(String zipFileString, String fileString)throws Exception {          android.util.Log.v("XZip", "UpZip(String, String)");          java.util.zip.ZipFile zipFile = new java.util.zip.ZipFile(zipFileString);          java.util.zip.ZipEntry zipEntry = zipFile.getEntry(fileString);                    return zipFile.getInputStream(zipEntry);        }                  /**      * 解压一个压缩文档 到指定位置      * @param zipFileString 压缩包的名字      * @param outPathString 指定的路径      * @throws Exception      */      public static void UnZipFolder(String zipFileString, String outPathString)throws Exception {          android.util.Log.v("XZip", "UnZipFolder(String, String)"+zipFileString+"  "+outPathString);          java.util.zip.ZipInputStream inZip = new java.util.zip.ZipInputStream(new java.io.FileInputStream(zipFileString));          java.util.zip.ZipEntry zipEntry;          String szName = "";                    while ((zipEntry = inZip.getNextEntry()) != null) {              szName = zipEntry.getName();                        if (zipEntry.isDirectory()) {                            // get the folder name of the widget                  szName = szName.substring(0, szName.length() - 1);                  java.io.File folder = new java.io.File(outPathString + java.io.File.separator + szName);                  folder.mkdirs();                        } else {                            java.io.File file = new java.io.File(outPathString + java.io.File.separator + szName);                  file.createNewFile();                  // get the output stream of the file                  java.io.FileOutputStream out = new java.io.FileOutputStream(file);                  int len;                  byte[] buffer = new byte[1024];                  // read (len) bytes into buffer                  while ((len = inZip.read(buffer)) != -1) {                      // write (len) byte from buffer at the position 0                      out.write(buffer, 0, len);                      out.flush();                  }                  out.close();              }          }//end of while                    inZip.close();            }//end of func              /**      * 压缩文件,文件夹      * @param srcFileString 要压缩的文件/文件夹名字      * @param zipFileString 指定压缩的目的和名字      * @throws Exception      */      public static void ZipFolder(String srcFileString, String zipFileString)throws Exception {          android.util.Log.v("XZip", "ZipFolder(String, String)");                    //创建Zip包          java.util.zip.ZipOutputStream outZip = new java.util.zip.ZipOutputStream(new java.io.FileOutputStream(zipFileString));                    //打开要输出的文件          java.io.File file = new java.io.File(srcFileString);            //压缩          ZipFiles(file.getParent()+java.io.File.separator, file.getName(), outZip);                    //完成,关闭          outZip.finish();          outZip.close();            }//end of func            /**      * 压缩文件      * @param folderString      * @param fileString      * @param zipOutputSteam      * @throws Exception      */      private static void ZipFiles(String folderString, String fileString, java.util.zip.ZipOutputStream zipOutputSteam)throws Exception{          android.util.Log.v("XZip", "ZipFiles(String, String, ZipOutputStream)");                    if(zipOutputSteam == null)              return;                    java.io.File file = new java.io.File(folderString+fileString);                    //判断是不是文件          if (file.isFile()) {                java.util.zip.ZipEntry zipEntry =  new java.util.zip.ZipEntry(fileString);              java.io.FileInputStream inputStream = new java.io.FileInputStream(file);              zipOutputSteam.putNextEntry(zipEntry);                            int len;              byte[] buffer = new byte[4096];                            while((len=inputStream.read(buffer)) != -1)              {                  zipOutputSteam.write(buffer, 0, len);              }                            zipOutputSteam.closeEntry();          }          else {                            //文件夹的方式,获取文件夹下的子文件              String fileList[] = file.list();                            //如果没有子文件, 则添加进去即可              if (fileList.length <= 0) {                  java.util.zip.ZipEntry zipEntry =  new java.util.zip.ZipEntry(fileString+java.io.File.separator);                  zipOutputSteam.putNextEntry(zipEntry);                  zipOutputSteam.closeEntry();                              }                            //如果有子文件, 遍历子文件              for (int i = 0; i < fileList.length; i++) {                  ZipFiles(folderString, fileString+java.io.File.separator+fileList[i], zipOutputSteam);              }//end of for                }//end of if                }//end of func            public void finalize() throws Throwable {                }    }  


更多相关文章

  1. AndroidManifest文件中android属性
  2. Android 的相关文件类型
  3. Android中attrs.xml文件的使用详解
  4. 如何给你的Android 安装文件(APK)瘦身
  5. 教你用电脑从 Google Play 下载 Android 程序 apk 文件
  6. Android获取keystore文件的信息
  7. Android学习笔记_布局文件属性的说明
  8. Android Xml文件生成,Xml数据格式写入

随机推荐

  1. html5 canvas实例 绘制变形图形 径向渐变
  2. chtmlview中实现IDownloadManager时,创建C
  3. 广州朋友注意“蓝&白”快餐店:前客剩粥加
  4. 访问Java Servlet中的JavaScript表DOM
  5. 浮动到页面底部的可变高度页脚的CSS(不是
  6. 【网络爬虫】【java】微博爬虫(四):数据处理
  7. 正文获取摘要 去除html标记
  8. a标签的link、visited、hover、active的
  9. Html页面Js调用android本地相机和图片
  10. 让Vs2010支持 Css3+HTML5