/* * File : UrlZip.java * Created : 25-sep-2001 10:54 * By : fbusquets * * JClic - Authoring and playing system for educational activities * * Copyright (C) 2000 - 2005 Francesc Busquets & Departament * d'Educacio de la Generalitat de Catalunya * * 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 2 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 (see the LICENSE file). */ package edu.xtec.jclic.fileSystem; import edu.xtec.util.ResourceBridge; import java.io.*; import java.util.ArrayList; import java.util.zip.*; /** * * @author Francesc Busquets (fbusquets@xtec.cat) * @version 13.09.10 */ public class UrlZip extends ZipFileSystem{ /** Creates new ZipFileSystem */ public UrlZip(String rootPath, String fName, ResourceBridge rb) throws Exception{ super(rootPath, fName, rb); ZipInputStream zis=new ZipInputStream(super.getInputStream(fName)); ArrayList<UrlZipEntry> v=new ArrayList<UrlZipEntry>(); ZipEntry entry; while((entry=zis.getNextEntry())!=null){ ByteArrayOutputStream baos=new ByteArrayOutputStream(); byte[] buffer=new byte[1024]; int bytesRead; while((bytesRead=zis.read(buffer, 0, 1024))>0) baos.write(buffer, 0, bytesRead); v.add(new UrlZipEntry(entry, baos.toByteArray())); zis.closeEntry(); } zis.close(); entries=v.toArray(new UrlZipEntry[v.size()]); } protected class UrlZipEntry extends ExtendedZipEntry{ byte[] data; UrlZipEntry(ZipEntry entry){ super(entry); data=null; } UrlZipEntry(ZipEntry entry, byte[] setData){ super(entry); data=setData; } public byte[] getBytes() throws IOException{ return data; } public InputStream getInputStream() throws IOException{ return new ByteArrayInputStream(data); } } }