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 CopyFiles
{
//Internal Method. Skips Retesting Input Validity, during recursion.
static int COPY(
final FileNode directory,
final FileNodeFilter filter,
final String targetDirectory,
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;
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'
);
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 numCopied = CopyFiles.COPY(directory, fileFilter, targetDirectory, a);
if (a != null) a.append(
"Copied " + StrPrint.zeroPad(numCopied) + " 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();
numCopied += CopyFiles.RECURSIVE(dir, fileFilter, dirFilter, newTargetDirectory, a);
}
return numCopied;
}
static void COPY(
final String inFileName,
final String outFileOrDirName
)
throws IOException
{
try (
FileInputStream fis = new FileInputStream(inFileName);
FileOutputStream fos = new FileOutputStream(outFileOrDirName);
)
{
final byte[] b = new byte[5000];
int result = 0;
while ((result = fis.read(b)) != -1) fos.write(b, 0, result);
fos.flush();
}
}
}
|