private static void copyWithFilterChainsOrTranscoding(final Resource source,
final Resource dest,
final Vector<FilterChain> filterChains,
final boolean append,
final String inputEncoding,
final String outputEncoding,
final Project project)
throws IOException {
if (areSame(source, dest)) {
log(project, "Skipping (self) copy of " + source + " to " + dest);
return;
}
try (Reader in = filterWith(project, inputEncoding, filterChains,
source.getInputStream());
BufferedWriter out = new BufferedWriter(new OutputStreamWriter(
getOutputStream(dest, append, project),
charsetFor(outputEncoding)))) {
final char[] buffer = new char[FileUtils.BUF_SIZE];
while (true) {
final int nRead = in.read(buffer, 0, buffer.length);
if (nRead == -1) {
break;
}
out.write(buffer, 0, nRead);
}
}
}