Android Zip解压缩工具类

jopen 5年前

public class ZipUtil {   public ZipUtil(){       }       /**        * DeCompress the ZIP to the path        * @param zipFileString  name of ZIP        * @param outPathString   path to be unZIP       * @throws Exception        */        public static void UnZipFolder(String zipFileString, String outPathString) throws Exception {            ZipInputStream inZip = new ZipInputStream(new FileInputStream(zipFileString));            ZipEntry zipEntry;            String szName = "";           System.out.println("start");          while ((zipEntry = inZip.getNextEntry()) != null) {                           szName = zipEntry.getName();                System.out.println(szName);              if (zipEntry.isDirectory()) {                    // get the folder name of the widget                    szName = szName.substring(0, szName.length() - 1);                    File folder = new File(outPathString + File.separator + szName);                    folder.mkdirs();                } else {                                File file = new File(outPathString + File.separator + szName);                    file.createNewFile();                    // get the output stream of the file                    FileOutputStream out = new 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();                }            }          System.out.println("ssssss");          inZip.close();        }              /**        * Compress file and folder       * @param srcFileString   file or folder to be Compress       * @param zipFileString   the path name of result ZIP       * @throws Exception        */        public static void ZipFolder(String srcFileString, String zipFileString)throws Exception {            //create ZIP           ZipOutputStream outZip = new ZipOutputStream(new FileOutputStream(zipFileString));            //create the file           File file = new File(srcFileString);            //compress          ZipFiles(file.getParent()+File.separator, file.getName(), outZip);            //finish and close          outZip.finish();            outZip.close();        }            /**        * compress files       * @param folderString        * @param fileString        * @param zipOutputSteam        * @throws Exception        */        private static void ZipFiles(String folderString, String fileString, ZipOutputStream zipOutputSteam)throws Exception{            if(zipOutputSteam == null)            return;            File file = new File(folderString+fileString);            if (file.isFile()) {                ZipEntry zipEntry =  new ZipEntry(fileString);                FileInputStream inputStream = new 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 {                //folder              String fileList[] = file.list();                //no child file and compress                if (fileList.length <= 0) {                    ZipEntry zipEntry =  new ZipEntry(fileString+File.separator);                    zipOutputSteam.putNextEntry(zipEntry);                    zipOutputSteam.closeEntry();                                }                //child files and recursion                for (int i = 0; i < fileList.length; i++) {                    ZipFiles(folderString, fileString+java.io.File.separator+fileList[i], zipOutputSteam);                }//end of for            }          }         /**        * return the InputStream of file in the ZIP       * @param zipFileString  name of ZIP        * @param fileString     name of file in the ZIP        * @return InputStream        * @throws Exception        */        public static InputStream UpZip(String zipFileString, String fileString)throws Exception {            ZipFile zipFile = new ZipFile(zipFileString);            ZipEntry zipEntry = zipFile.getEntry(fileString);            return zipFile.getInputStream(zipEntry);        }           /**        * return files list(file and folder) in the ZIP       * @param zipFileString     ZIP name       * @param bContainFolder    contain folder or not       * @param bContainFile      contain file or not       * @return        * @throws Exception        */        public static List<File> GetFileList(String zipFileString, boolean bContainFolder, boolean bContainFile)throws Exception {            List<File> fileList = new ArrayList<File>();            ZipInputStream inZip = new ZipInputStream(new FileInputStream(zipFileString));            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);                    File folder = new File(szName);                    if (bContainFolder) {                        fileList.add(folder);                    }                            } else {                    File file = new File(szName);                    if (bContainFile) {                        fileList.add(file);                    }                }            }          inZip.close();            return fileList;        }    }
来自:http://blog.csdn.net/zimo2013/article/details/38071539