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
84
85
86
87
88
89
90
91
92
93
94
95
96 | package Torello.Java;
import static Torello.Java.C.*;
import java.util.*;
import java.io.*;
import java.nio.file.*;
class MoveFiles
{
// Internal Method. Skips Retesting Input Validity, during recursion.
static int MOVE(
final FileNode directory,
final FileNodeFilter filter,
final String targetDirectory,
final Appendable a
)
throws IOException
{
int count = 0;
Iterator<FileNode> iter = directory.getDirContentsFiles(RTC.ITERATOR());
while (iter.hasNext())
{
FileNode fn = iter.next();
if ((filter != null) && (! filter.test(fn))) continue;
CopyFiles.COPY(fn.getFullPathName(), targetDirectory + fn.name);
if (a != null) a.append(
BCYAN + "COPY: " + RESET + fn.getFullPathName() + BCYAN + "\tTO:\t" + RESET +
targetDirectory + fn.name + '\n'
);
fn.getJavaIOFile().delete();
if (a != null) a.append(BCYAN + "DELETE: " + RESET + fn.getFullPathName() + '\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 String targetDirectory,
final Appendable a
)
throws IOException
{
int numMoved = MoveFiles.MOVE(directory, fileFilter, targetDirectory, a);
if (a != null) a.append(
"Moved " + StrPrint.zeroPad(numMoved) + " files from:" +
BRED + " [" + directory.getFullPathName() + "]" + RESET +
" to: " + BRED + "[" + targetDirectory + "]" + 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;
final String newTargetDirectory = targetDirectory + dir.name + File.separator;
new File(newTargetDirectory).mkdirs();
numMoved += MoveFiles.RECURSIVE(dir, fileFilter, dirFilter, newTargetDirectory, 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 numMoved;
}
}
|