package org.eclipse.dltk.internal.core; import java.io.File; import java.io.IOException; import java.io.InputStream; import java.util.Enumeration; import java.util.zip.ZipEntry; import java.util.zip.ZipException; import java.util.zip.ZipFile; import org.eclipse.dltk.core.IArchive; import org.eclipse.dltk.core.IArchiveEntry; public class ZipArchiveFile implements IArchive { private ZipFile zipFile; public ZipArchiveFile(File file) throws ZipException, IOException { zipFile = new ZipFile(file); } public ZipArchiveFile(String zipName) throws IOException { zipFile = new ZipFile(zipName); } public InputStream getInputStream(IArchiveEntry entry) throws IOException { ZipArchiveEntry zipArchiveEntry = (ZipArchiveEntry) entry; return zipFile.getInputStream(zipArchiveEntry.getZipEntry()); } public IArchiveEntry getArchiveEntry(String name) { return new ZipArchiveEntry(zipFile.getEntry(name)); } public Enumeration<? extends IArchiveEntry> getArchiveEntries() { final Enumeration<? extends ZipEntry> zipEnumeration = zipFile .entries(); return new Enumeration<IArchiveEntry>() { public boolean hasMoreElements() { return zipEnumeration.hasMoreElements(); } public IArchiveEntry nextElement() { return new ZipArchiveEntry(zipEnumeration.nextElement()); } }; } public void close() throws IOException { zipFile.close(); } public String getName() { return zipFile.getName(); } }