From cf3e246c38c1755fb0054ce57b4bc573c3312402 Mon Sep 17 00:00:00 2001 From: mark Date: Sun, 27 Aug 2000 22:26:27 +0000 Subject: * java/util/zip/ZipFile.java: Implement OPEN_DELETE mode, new constructor, close can delete the file, finalize calls close. * java/util/jar/JarFile.java: Constructor that takes mode now calls super. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@36007 138bc75d-0d04-0410-961f-82ee72b054a4 --- libjava/java/util/zip/ZipFile.java | 35 ++++++++++++++++++++++++++++++++--- 1 file changed, 32 insertions(+), 3 deletions(-) (limited to 'libjava/java/util/zip/ZipFile.java') diff --git a/libjava/java/util/zip/ZipFile.java b/libjava/java/util/zip/ZipFile.java index 43d72267aea..bb6eab47146 100644 --- a/libjava/java/util/zip/ZipFile.java +++ b/libjava/java/util/zip/ZipFile.java @@ -18,15 +18,35 @@ import java.io.*; public class ZipFile implements ZipConstants { + public static final int OPEN_READ = 1; + public static final int OPEN_DELETE = 4; + public ZipFile (String fname) throws IOException { - file = new RandomAccessFile(fname, "r"); - name = fname; - readDirectory (); + this(new File(fname)); } public ZipFile (File f) throws IOException { + this(f, OPEN_READ); + } + + public ZipFile (File f, int mode) throws IOException + { + if (mode != OPEN_READ && mode != (OPEN_READ | OPEN_DELETE)) + throw new IllegalArgumentException + ("mode can only be OPEN_READ or OPEN_READ | OPEN_DELETE"); + + if ((mode & OPEN_DELETE) != 0) + { + delete_on_close = f; + // f.deleteOnExit(); XXX - Not yet implemented in libgcj + } + else + { + delete_on_close = null; + } + file = new RandomAccessFile(f, "r"); name = f.getName(); readDirectory (); @@ -107,6 +127,8 @@ public class ZipFile implements ZipConstants file.close(); entries = null; numEntries = 0; + if (delete_on_close != null) + delete_on_close.delete(); } public ZipEntry getEntry(String name) @@ -148,6 +170,10 @@ public class ZipFile implements ZipConstants return numEntries; } + protected void finalize () throws IOException { + close(); + } + private int readu2 () throws IOException { int byte0 = file.read(); @@ -173,6 +199,9 @@ public class ZipFile implements ZipConstants int numEntries; RandomAccessFile file; String name; + /** File to delete on close or null. */ + File delete_on_close; + } final class ZipEnumeration implements java.util.Enumeration -- cgit v1.2.3