diff options
Diffstat (limited to 'libjava/gnu/gcj/util/path/ZipPathEntry.java')
| -rw-r--r-- | libjava/gnu/gcj/util/path/ZipPathEntry.java | 86 |
1 files changed, 86 insertions, 0 deletions
diff --git a/libjava/gnu/gcj/util/path/ZipPathEntry.java b/libjava/gnu/gcj/util/path/ZipPathEntry.java new file mode 100644 index 00000000000..ac0226290a5 --- /dev/null +++ b/libjava/gnu/gcj/util/path/ZipPathEntry.java @@ -0,0 +1,86 @@ +// ZipPathEntry.java -- search path element for directories + +/* Copyright (C) 1999 Cygnus Solutions + + This file is part of libgcj. + +This software is copyrighted work licensed under the terms of the +Libgcj License. Please consult the file "LIBGCJ_LICENSE" for +details. */ + +/* Author: Kresten Krab Thorup <krab@gnu.org> */ + +package gnu.gcj.util.path; + +import java.util.*; +import java.util.zip.*; +import java.io.*; +import java.net.*; + + +final class ZipPathEntry extends PathEntry { + final ZipFile zip; + final URL file; + + public String toString () { return zip.getName (); } + + ZipPathEntry (File f) + throws MalformedURLException, ZipException, IOException + { + file = new URL ("file", "", f.getPath ()); + zip = new ZipFile (f); + zip.readDirectory (); + } + + /* + The url for a zip-file resource is, + + <code>file:///path/file.zip#name</code> + + Then, it is URLConnection's problem to handle that. + */ + + URL getURL (String f) { + + ZipEntry ent = zip.getEntry (f); + + try { + if (ent != null) + return new URL (file, "#"+f); + else + return null; + } catch (IOException x) { + return null; + } + } + + InputStream getStream (String f) { + + ZipEntry ent = zip.getEntry (f); + + try { + if (ent != null) + return zip.getInputStream (ent); + else + return null; + } catch (IOException x) { + return null; + } + } + + byte[] getBytes (String f) { + ZipEntry ent = zip.getEntry (f); + + try { + if (ent != null) + return readbytes (zip.getInputStream (ent), + (int) ent.getSize ()); + else + return null; + } catch (IOException x) { + return null; + } + + } +} + |

