Android Zip解壓縮工具類

jopen 10年前發布 | 38K 次閱讀 Android Android開發 移動開發

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;  
}  

}</pre>來自:http://blog.csdn.net/zimo2013/article/details/38071539

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!