Zip Util
//package com.softright.tools; import android.util.Log; /** * 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 { try{ 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(); }catch(Exception e){ Log.d("UI","unzip error!"); } } } 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 { } }
1. | unzip | ||
2. | Zip Reader |