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

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

Introduction

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

Prototype

public long getNameCRC32() 

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.  jav  a  2s  .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;
}