//////////////////////////////////////////////////////////////////////////////// // Copyright 2012 Michael Schmalle - Teoti Graphix, LLC // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License // // Author: Michael Schmalle, Principal Architect // mschmalle at teotigraphix dot com //////////////////////////////////////////////////////////////////////////////// package com.teotigraphix.caustk.utils; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.util.zip.ZipEntry; import java.util.zip.ZipInputStream; /* String zipFile = Environment.getExternalStorageDirectory() + "/files.zip"; String unzipLocation = Environment.getExternalStorageDirectory() + "/unzipped/"; Decompress d = new Decompress(zipFile, unzipLocation); d.unzip(); */ /** * @author Michael Schmalle * @copyright Teoti Graphix, LLC * @since 1.0 */ public class Decompress { private String _zipFile; private String _location; public Decompress(String zipFile, String location) { _zipFile = zipFile; _location = location; _dirChecker(""); } public void unzip() { try { FileInputStream fin = new FileInputStream(_zipFile); ZipInputStream zin = new ZipInputStream(fin); ZipEntry ze = null; while ((ze = zin.getNextEntry()) != null) { //XXX Log.v("Decompress", "Unzipping " + ze.getName()); if (ze.isDirectory()) { _dirChecker(ze.getName()); } else { int size; byte[] buffer = new byte[2048]; FileOutputStream bufferOut = new FileOutputStream(new File(_location, ze.getName())); while ((size = zin.read(buffer, 0, buffer.length)) != -1) { bufferOut.write(buffer, 0, size); } zin.closeEntry(); bufferOut.flush(); bufferOut.close(); } } zin.close(); } catch (Exception e) { //XXX Log.e("Decompress", "unzip", e); } } private void _dirChecker(String dir) { File f = new File(_location + dir); if (!f.isDirectory()) { f.mkdirs(); } } }