Index: java/io/File.java =================================================================== RCS file: /cvsroot/classpath/classpath/java/io/File.java,v retrieving revision 1.46 diff -u -r1.46 File.java --- java/io/File.java 7 May 2004 08:10:29 -0000 1.46 +++ java/io/File.java 17 May 2004 09:42:01 -0000 @@ -43,6 +43,8 @@ import java.net.URI; import java.net.URISyntaxException; import java.net.URL; +import java.util.LinkedList; +import java.util.Iterator; import gnu.java.io.PlatformHelper; @@ -62,6 +64,37 @@ */ public class File implements Serializable, Comparable { + static class DeleteFileHelper extends Thread + { + LinkedList filesToDelete = new LinkedList(); + + public DeleteFileHelper() + { + Runtime.getRuntime().addShutdownHook(this); + } + + public void run() + { + Iterator it = filesToDelete.iterator(); + + while (it.hasNext()) + { + try + { + File file = (File) it.next(); + file.delete(); + } + catch (Exception e) + { + // Do nothing here. + } + } + } + } + + private static final DeleteFileHelper deleteFileHelper = + new DeleteFileHelper(); + private static final long serialVersionUID = 301077366599181567L; /** @@ -1180,12 +1213,7 @@ if (sm != null) sm.checkDelete(path); - // Sounds like we need to do some VM specific stuff here. We could delete - // the file in finalize() and set FinalizeOnExit to true, but delete on - // finalize != delete on exit and we should not be setting up system - // parameters without the user's knowledge. - // FIXME: ********IMPLEMENT ME!!!!!!*************** - return; + deleteFileHelper.filesToDelete.add(this); } private void writeObject(ObjectOutputStream oos) throws IOException