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. 我的Android进阶之旅------>Android电话实例
  2. AndroidManifest文件中android属性
  3. Android精选完整源码之控件指示器视频压缩日历源码!
  4. SeekBar自定义样式最优实现
  5. Android(安卓)文件系统与Android11 分区存储
  6. Android(安卓)AIDL使用
  7. Android系统编译系统分析大全(一)
  8. Android(安卓)的相关文件类型
  9. Android截屏浅析

随机推荐

  1. react native 修改Picker样式Android
  2. RelativeLayout用到的一些重要的属性
  3. Android中shape的使用
  4. Android系统框架基础
  5. Android移动开发之【Android实战项目】渐
  6. 推荐几个ListView下拉刷新
  7. android 移植 rp-pppoe
  8. android界面xml文件中导入另一个xml文件
  9. android studio 3.2 自定义打包apk名称
  10. Android平板电脑不能全屏显示的问题