XZip.java :  » Web » pockerface » com » lemon » tools » Android Open Source

Android Open Source » Web » pockerface 
pockerface » com » lemon » tools » XZip.java
package com.lemon.tools;


/**
 * Android Zip
 * @author lemon
 * @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 boolean UnZipFolder(String zipFileString, String outPathString)throws Exception {
    android.util.Log.v("XZip", "UnZipFolder(String, String)");
    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()) {
        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();
        java.io.FileOutputStream out = new java.io.FileOutputStream(file);
        int len;
        byte[] buffer = new byte[1024];
        while ((len = inZip.read(buffer)) != -1) {
          out.write(buffer, 0, len);
          out.flush();
        }
        out.close();
      }
    }    
    inZip.close();
    return true;
  }
  
  

  /**
   * ,
   * @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 {
    
  }

}
java2s.com  | Contact Us | Privacy Policy
Copyright 2009 - 12 Demo Source and Support. All rights reserved.
All other trademarks are property of their respective owners.