Example usage for org.apache.commons.compress.archivers.zip UnicodePathExtraField UPATH_ID

List of usage examples for org.apache.commons.compress.archivers.zip UnicodePathExtraField UPATH_ID

Introduction

In this page you can find the example usage for org.apache.commons.compress.archivers.zip UnicodePathExtraField UPATH_ID.

Prototype

ZipShort UPATH_ID

To view the source code for org.apache.commons.compress.archivers.zip UnicodePathExtraField UPATH_ID.

Click Source Link

Usage

From source file:com.zimbra.cs.util.ZipUtil.java

/**
 * Use InfoZIP Unicode Extra Fields (if present) to set the filename
 *///  w  w  w.j a v a  2 s  . c om
private static String getNameFromUnicodeExtraPathIfPresent(ZipArchiveEntry zae) {
    UnicodePathExtraField unicodePathExtraField = (UnicodePathExtraField) zae
            .getExtraField(UnicodePathExtraField.UPATH_ID);
    if (null == unicodePathExtraField) {
        return null;
    }
    CRC32 crc32 = new CRC32();
    crc32.update(zae.getRawName());
    long origCRC32 = crc32.getValue();

    if (origCRC32 == unicodePathExtraField.getNameCRC32()) {
        String val = convertBytesIfPossible(unicodePathExtraField.getUnicodeName(), StandardCharsets.UTF_8);
        if (null != val) {
            ZimbraLog.misc.debug("ZipUtil name '%s' from unicodeExtraPath", val);
        }
        return val;
    }
    return null;
}