in freemarker-docgen-core/src/main/java/org/freemarker/docgen/core/FileUtil.java [117:164]
private static int copyDir(
File srcDir, File destDir, File srcBaseDir, Collection<Pattern> ignoredFilePathPatterns)
throws IOException {
int fileCounter = 0;
destDir = destDir.getAbsoluteFile();
srcDir = srcDir.getAbsoluteFile();
String srcBaseDirPath = ensureEndsWithFileSeparator(srcBaseDir.getAbsolutePath());
if (!destDir.isDirectory()) {
if (destDir.exists()) {
throw new IOException("Can't create directory, because a "
+ "file with the same name already exists: "
+ destDir.getAbsolutePath());
}
if (!destDir.mkdir()) {
throw new IOException("Failed to create directory: "
+ destDir.getAbsolutePath());
}
}
File[] ls = srcDir.listFiles();
if (ls == null) {
throw new IOException("Failed to list directory: "
+ srcDir.getAbsolutePath());
}
for (File f : srcDir.listFiles()) {
String fName = f.getName();
if (isUsualIgnorableFileOrDirectory(fName) || isDocgenFile(fName)) {
continue;
}
File dest = new File(destDir, fName);
if (f.isFile()) {
if (!isIgnoredFile(f, srcBaseDirPath, ignoredFilePathPatterns)) {
copyFile(f, dest);
fileCounter++;
}
} else if (f.isDirectory()) {
fileCounter += copyDir(f, dest, srcBaseDir, ignoredFilePathPatterns);
} else {
throw new IOException(
"Failed decide if it's a file or a directory: "
+ f.getAbsolutePath());
}
}
return fileCounter;
}