private static void recursiveZip(final ZipOutputStream zos, final File root,
final File base) throws IOException {
final String[] dirList = base.list();
for (final String element : dirList) {
final File f = new File(base, element);
if (f.isDirectory()) {
recursiveZip(zos, root, f);
} else {
final FileInputStream fis = new FileInputStream(f);
try {
if (!FilenameUtils.isExtension(f.getName(),
Arrays.asList("js", "coffee", "ts", "json", "css", "less"))) {
writeDeflate(f, fis, zos, root);
} else {
writeStored(f, fis, zos, root);
}
} finally {
IOUtils.closeQuietly(fis);
}
}
}
}