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

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

Introduction

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

Prototype

public byte[] getUnicodeName() 

Source Link

Usage

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

/**
 * Use InfoZIP Unicode Extra Fields (if present) to set the filename
 *//*from   w  w w . j  a  va2 s .  c  o  m*/
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;
}