/******************************************************************************* * * Copyright (c) 2013 blinkbox Entertainment Limited. All rights reserved. * * *******************************************************************************/ package com.blinkbox.java.book.utils; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import java.util.zip.ZipEntry; import java.util.zip.ZipInputStream; import android.content.Context; import com.blinkbox.java.book.factory.BBBEPubZipFactory; import com.blinkbox.java.book.factory.BBBEPubZipFactory.BBBEZipEntry; import com.blinkbox.java.book.factory.BBBEPubZipFactory.BBBEZipParser; public class BBBEPubZipInputStream implements BBBEZipParser { private final Context mContext; private final String mFileUrl; private final String mAssetFile; public BBBEPubZipInputStream(Context context, String fileUrl) { mContext = context; mFileUrl = fileUrl; if (mFileUrl.startsWith(BBBEPubZipFactory.ANDROID_ASSET)) { mAssetFile = mFileUrl.substring(BBBEPubZipFactory.ANDROID_ASSET.length()); } else { mAssetFile = null; } } private InputStream getInputStream() throws IOException { if (mAssetFile != null) { return mContext.getAssets().open(mAssetFile); } return new FileInputStream(mFileUrl); } @SuppressWarnings("resource") public BBBEZipEntry getZipFileInputStream(String zip2Entry) { ZipInputStream zipInputStream = null; try { zipInputStream = new ZipInputStream(getInputStream()); ZipEntry zipEntry = null; while ((zipEntry = zipInputStream.getNextEntry()) != null) { if (zipEntry.isDirectory()) { continue; } // String name = zipEntry.getName(); // long size = zipEntry.getSize(); // int compression = zipEntry.getMethod(); // System.out.println("out " + stripAnchor + " " + name + " " + size + " comp " + compression); if (zipEntry.getName().equals(zip2Entry)) { return new BBBEZipEntry(zipInputStream, zipEntry.getSize()); } } zipInputStream.close(); } catch (IOException e) { e.printStackTrace(); } return null; } @Override public String getFileUrl() { return mFileUrl; } }