1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package com.linecorp.centraldogma.internal;
18
19 import java.io.File;
20 import java.io.IOException;
21 import java.nio.file.FileVisitResult;
22 import java.nio.file.FileVisitor;
23 import java.nio.file.Path;
24 import java.nio.file.SimpleFileVisitor;
25 import java.nio.file.attribute.BasicFileAttributes;
26
27 final class DeletingFileVisitor extends SimpleFileVisitor<Path> {
28
29 static final FileVisitor<Path> INSTANCE = new DeletingFileVisitor();
30
31 @Override
32 public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) {
33 delete(file);
34 return FileVisitResult.CONTINUE;
35 }
36
37 @Override
38 public FileVisitResult visitFileFailed(Path file, IOException exc) {
39 delete(file);
40 return FileVisitResult.CONTINUE;
41 }
42
43 @Override
44 public FileVisitResult postVisitDirectory(Path dir, IOException e) throws IOException {
45 delete(dir);
46
47 if (e == null) {
48 return FileVisitResult.CONTINUE;
49 } else {
50 throw e;
51 }
52 }
53
54 @SuppressWarnings("ResultOfMethodCallIgnored")
55 private static void delete(Path p) {
56 final File f = p.toFile();
57 f.delete();
58 f.setWritable(true, true);
59 }
60 }