src/share/classes/org/openjdk/jigsaw/Files.java
Print this page
@@ -24,14 +24,22 @@
*/
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 {
private Files() { }
@@ -107,10 +115,59 @@
}
}
delete(dst);
}
+ static List<IOException> deleteAllUnchecked(Path dir) {
+ final List<IOException> excs = new ArrayList<>();
+ try {
+ java.nio.file.Files.walkFileTree(dir, new FileVisitor<Path>() {
+ @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
{
java.nio.file.Files.copy(src.toPath(), dst.toPath(),
COPY_ATTRIBUTES, REPLACE_EXISTING);