/*
* http://code.google.com/p/ametro/
* Transport map viewer for Android platform
* Copyright (C) 2009-2010 contacts@ametro.org Roman Golovanov and other
* respective project committers (see project home page)
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see .
*
*/
//package org.ametro.util;
import java.io.BufferedInputStream;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.util.zip.ZipEntry;
import java.util.zip.ZipInputStream;
public class ZipUtil {
public static void unzip(File archive, File path) throws IOException{
ZipInputStream zip = null;
String fileName = null;
try{
if(!path.exists()){
path.mkdirs();
}
zip = new ZipInputStream(new FileInputStream(archive));
ZipEntry zipEntry;
while((zipEntry=zip.getNextEntry()) != null) {
fileName = zipEntry.getName();
final File outputFile = new File(path, fileName);
writeToStream(new BufferedInputStream(zip), new FileOutputStream(outputFile), false);
zip.closeEntry();
}
zip.close();
zip = null;
}finally{
if(zip != null){
try{ zip.close(); } catch(Exception e){}
}
}
}
public static void writeToStream(InputStream in , OutputStream out, boolean closeOnExit) throws IOException
{
byte[] bytes = new byte[2048];
for (int c = in.read(bytes); c != -1; c = in.read(bytes)) {
out.write(bytes,0, c);
}
if(closeOnExit){
in.close();
out.close();
}
}
public static String writeToString(InputStream stream) throws java.io.IOException{
StringBuffer fileData = new StringBuffer(1000);
BufferedReader reader = new BufferedReader(new InputStreamReader(stream,"utf-8"));
char[] buf = new char[1024];
int numRead=0;
while((numRead=reader.read(buf)) != -1){
String readData = String.valueOf(buf, 0, numRead);
fileData.append(readData);
buf = new char[1024];
}
reader.close();
return fileData.toString();
}
}