站內搜尋

2014/8/14

[Java] Android - unZip 解壓縮至特定目錄

解 ZIP 壓縮檔至指定目錄相信是一個非常普遍的需求,Java 其實也有支援 ZIP 的處理,但網路上的 Sample Code 總是只示範了解壓縮。
這邊提供了一個 Utility Method 來方便大家處理 unZip 的動作。
廢話不多說,直接看 Code 吧。
    public static boolean unZip(File zipFile, File dest)
    {
        BufferedOutputStream bos = null;
        try
        {
            FileInputStream fis = new FileInputStream(zipFile);
            ZipInputStream zipStream = new ZipInputStream(fis);
            ZipEntry zipEntry;
            
            while ((zipEntry = zipStream.getNextEntry()) != null)
            {
                String zipEntryName = zipEntry.getName();
                 
                // 直接將檔案指向我們希望它解壓的位置
                File file = new File(dest, zipEntryName);
             
                if (file.exists())
                {
                    Log.w("unZip", "Already exist! Skip");
                } 
                else 
                {
                    if(zipEntry.isDirectory())
                        file.mkdirs();
                    else
                    {
                        final int BUFFER_SIZE = 4096;
                        byte buffer[] = new byte[BUFFER_SIZE];
                        FileOutputStream fileOutputStream = new FileOutputStream(file);
                        bos = new BufferedOutputStream(fileOutputStream, BUFFER_SIZE);
                        
                        int count;
                        while ((count = zipStream.read(buffer, 0, BUFFER_SIZE)) != -1) 
                        {
                            bos.write(buffer, 0, count);
                        }
                        bos.flush();
                        bos.close();
                    }
                }
            }

            zipStream.close();
            fis.close();
            return true;
        }
        catch (Exception e)
        {
            Log.e("unZip", "unZip fail!!");
            e.printStackTrace();
        }

        return false;
    }
Ok, 打完收工。
這段程式碼也是參考一些網路上的朋友們的 Sample Code 寫出來的,取之於網路,就回饋網路吧。

熱門文章