1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83 | package Torello.Java;
import static Torello.Java.C.*;
import java.util.*;
import java.io.*;
import java.nio.file.*;
class DeleteFiles
{
// Internal Method. Skips Retesting Input Validity, during recursion.
static int DELETE(
final FileNode directory,
final FileNodeFilter filter,
final Appendable a
)
throws IOException
{
int count = 0;
final Iterator<FileNode> iter = directory.getDirContentsFiles(RTC.ITERATOR());
while (iter.hasNext())
{
final FileNode fn = iter.next();
if ((filter != null) && (! filter.test(fn))) continue;
final File f = fn.getJavaIOFile();
f.delete();
if (a != null) a.append("DELETED: " + BCYAN + fn.getFullPathName() + RESET + '\n');
count++;
}
return count;
}
// Internal Method. Skips Retesting Input Validity, during recursion.
static int RECURSIVE(
final FileNode directory,
final FileNodeFilter fileFilter,
final FileNodeFilter dirFilter,
final Appendable a
)
throws IOException
{
int numDeleted = DeleteFiles.DELETE(directory, fileFilter, a);
if (a != null) a.append(
"Deleted (" + StrPrint.zeroPad(numDeleted) + ") files from:" +
BRED + " [" + directory.getFullPathName() + "]" + RESET + '\n'
);
final Iterator<FileNode> dirs = directory.getDirContentsDirs(RTC.ITERATOR());
while (dirs.hasNext())
{
final FileNode dir = dirs.next();
if ((dirFilter != null) && (! dirFilter.test(dir))) continue;
numDeleted += DeleteFiles.RECURSIVE(dir, fileFilter, dirFilter, a);
}
final File d = directory.getJavaIOFile();
final boolean shouldDelete = (dirFilter == null) || dirFilter.test(directory);
int numRemainingFiles = d.list().length;
if ((numRemainingFiles == 0) && shouldDelete)
{
d.delete();
if (a != null) a.append
("Deleted (Empty) Directory: " + directory.getFullPathName() + '\n');
}
else if ((a != null) && (numRemainingFiles > 0) && shouldDelete) a.append(
"Unable to delete NON-EMPTY Directory: " + directory.getFullPathName() + ", " +
numRemainingFiles + " file(s) or dir(s) still remain.\n"
);
return numDeleted;
}
}
|