in src/main/org/apache/ant/compress/taskdefs/ArchiveBase.java [524:560]
protected void writeArchive(Collection/*<ResourceWithFlags>*/ src)
throws IOException {
ArchiveOutputStream out = null;
Set addedDirectories = new HashSet();
try {
String enc = Expand.NATIVE_ENCODING.equals(getEncoding())
? null : getEncoding();
out = StreamHelper.getOutputStream(factory, getDest(), enc);
if (out == null) {
out =
factory.getArchiveStream(new BufferedOutputStream(getDest()
.getOutputStream()),
enc);
}
for (Iterator i = src.iterator(); i.hasNext(); ) {
ResourceWithFlags r = (ResourceWithFlags) i.next();
if (!isFilesOnly()) {
ensureParentDirs(out, r, addedDirectories);
}
ArchiveEntry ent = entryBuilder.buildEntry(r);
out.putArchiveEntry(ent);
if (!r.getResource().isDirectory()) {
try (InputStream in = r.getResource().getInputStream()) {
IOUtils.copy(in, out);
}
} else {
addedDirectories.add(r.getName());
}
out.closeArchiveEntry();
}
} finally {
FILE_UTILS.close(out);
}
}