--- old/src/share/classes/org/openjdk/jigsaw/Files.java Thu Apr 26 16:20:18 2012 +++ new/src/share/classes/org/openjdk/jigsaw/Files.java Thu Apr 26 16:20:18 2012 @@ -26,10 +26,18 @@ package org.openjdk.jigsaw; import java.io.*; +import java.nio.file.attribute.BasicFileAttributes; +import java.nio.file.FileVisitor; +import java.nio.file.FileVisitResult; +import java.nio.file.NoSuchFileException; +import java.nio.file.Path; +import java.util.ArrayList; +import java.util.List; import java.util.jar.*; import java.util.zip.*; import static java.nio.file.StandardCopyOption.COPY_ATTRIBUTES; import static java.nio.file.StandardCopyOption.REPLACE_EXISTING; +import static java.lang.String.format; public final class Files { @@ -109,6 +117,55 @@ delete(dst); } + static List deleteAllUnchecked(Path dir) { + final List excs = new ArrayList<>(); + try { + java.nio.file.Files.walkFileTree(dir, new FileVisitor() { + @Override + public FileVisitResult preVisitDirectory(Path dir, BasicFileAttributes attrs) { + return FileVisitResult.CONTINUE; + } + @Override + public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) { + try { + java.nio.file.Files.delete(file); + } catch (IOException x) { + excs.add(new IOException(format("Unable to delete %s: %s\n", file, x))); + } + return FileVisitResult.CONTINUE; + } + @Override + public FileVisitResult postVisitDirectory(Path dir, IOException exc) { + try { + java.nio.file.Files.delete(dir); + } catch (IOException x) { + excs.add(new IOException(format("Unable to delete %s: %s\n", dir, x))); + } + return FileVisitResult.CONTINUE; + } + @Override + public FileVisitResult visitFileFailed(Path file, IOException exc) { + excs.add(new IOException(format("Unable to visit %s: %s\n", file, exc))); + return FileVisitResult.CONTINUE; + } + }); + } catch (IOException x) { + excs.add(x); + } + return excs; + } + + static IOException deleteUnchecked(Path file) + { + try { + java.nio.file.Files.delete(file); + } catch (IOException exc) { + return new IOException(format("Unable to delete %s: %s\n", file, exc)); + } + return null; + } + + private static void copy(File src, File dst) throws IOException {