/** * Add a directory entry to the archive using a specified * Unix-mode and the default mode for its parent directories (if * necessary). */ private void addDirectoryResource(final Resource r, String name, final String prefix, final File base, final ZipOutputStream zOut, final int defaultDirMode, final int thisDirMode) throws IOException { if (!name.endsWith("/")) { name += "/"; } final int nextToLastSlash = name.lastIndexOf('/', name.length() - 2); if (nextToLastSlash != -1) { addParentDirs(base, name.substring(0, nextToLastSlash + 1), zOut, prefix, defaultDirMode); } zipDir(r, zOut, prefix + name, thisDirMode, r instanceof ZipResource ? ((ZipResource) r).getExtraFields() : null); }
/** * Retrieves extra fields. * @return an array of the extra fields * @since Ant 1.8.0 */ public ZipExtraField[] getExtraFields() { if (isReference()) { return ((ZipResource) getCheckedRef()).getExtraFields(); } checkEntry(); if (extras == null) { return new ZipExtraField[0]; } return extras; }
/** * Add a file entry. */ private void addResource(final Resource r, final String name, final String prefix, final ZipOutputStream zOut, final int mode, final ZipFile zf, final File fromArchive) throws IOException { if (zf != null) { final ZipEntry ze = zf.getEntry(r.getName()); if (ze != null) { final boolean oldCompress = doCompress; if (keepCompression) { doCompress = (ze.getMethod() == ZipEntry.DEFLATED); } try (final BufferedInputStream is = new BufferedInputStream(zf.getInputStream(ze))) { zipFile(is, zOut, prefix + name, ze.getTime(), fromArchive, mode, ze.getExtraFields(true)); } finally { doCompress = oldCompress; } } } else { try (final BufferedInputStream is = new BufferedInputStream(r.getInputStream())) { zipFile(is, zOut, prefix + name, r.getLastModified(), fromArchive, mode, r instanceof ZipResource ? ((ZipResource) r).getExtraFields() : null); } } }
(org.apache.tools.ant.types.resources.ZipResource) r; org.apache.tools.zip.ZipExtraField[] extra = zr.getExtraFields(); ZipExtraField[] ex = new ZipExtraField[extra == null ? 0 : extra.length];