# GeneralPurposeBit (Apache Commons Compress 1.13 API)

org.apache.commons.compress.archivers.zip

## Class GeneralPurposeBit

- java.lang.Object
- - org.apache.commons.compress.archivers.zip.GeneralPurposeBit

- All Implemented Interfaces:
    Cloneable

      public final class GeneralPurposeBit
      extends Object
      implements Cloneable

  Parser/encoder for the "general purpose bit" field in ZIP's local file and central directory headers.
  Since:
    1.1
  This class is not thread-safe

- - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `static int` | `UFT8_NAMES_FLAG` Indicates that filenames are written in UTF-8.

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `GeneralPurposeBit()`

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `Object` | `clone()`
    `byte[]` | `encode()` Encodes the set bits in a form suitable for ZIP archives.
    `void` | `encode(byte[] buf, int offset)` Encodes the set bits in a form suitable for ZIP archives.
    `boolean` | `equals(Object o)`
    `int` | `hashCode()`
    `static GeneralPurposeBit` | `parse(byte[] data, int offset)` Parses the supported flags from the given archive data.
    `void` | `useDataDescriptor(boolean b)` whether the current entry will use the data descriptor to store CRC and size information.
    `void` | `useEncryption(boolean b)` whether the current entry will be encrypted.
    `boolean` | `usesDataDescriptor()` whether the current entry uses the data descriptor to store CRC and size information.
    `boolean` | `usesEncryption()` whether the current entry is encrypted.
    `boolean` | `usesStrongEncryption()` whether the current entry is encrypted using strong encryption.
    `void` | `useStrongEncryption(boolean b)` whether the current entry will be encrypted using strong encryption.
    `boolean` | `usesUTF8ForNames()` whether the current entry uses UTF8 for file name and comment.
    `void` | `useUTF8ForNames(boolean b)` whether the current entry will use UTF8 for file name and comment.

    - ### Methods inherited from class java.lang.Object

      `finalize, getClass, notify, notifyAll, toString, wait, wait, wait`

- - ### Field Detail

    - #### UFT8_NAMES_FLAG

          public static final int UFT8_NAMES_FLAG

      Indicates that filenames are written in UTF-8.

      The only reason this is public is that `ZipArchiveOutputStream.EFS_FLAG` was public in Apache Commons Compress 1.0 and we needed a substitute for it.

      See Also:
        Constant Field Values

  - ### Constructor Detail

    - #### GeneralPurposeBit

          public GeneralPurposeBit()

  - ### Method Detail

    - #### usesUTF8ForNames

          public boolean usesUTF8ForNames()

      whether the current entry uses UTF8 for file name and comment.
      Returns:
        whether the current entry uses UTF8 for file name and comment.

    - #### useUTF8ForNames

          public void useUTF8ForNames(boolean b)

      whether the current entry will use UTF8 for file name and comment.
      Parameters:
        `b` - whether the current entry will use UTF8 for file name and comment.

    - #### usesDataDescriptor

          public boolean usesDataDescriptor()

      whether the current entry uses the data descriptor to store CRC and size information.
      Returns:
        whether the current entry uses the data descriptor to store CRC and size information

    - #### useDataDescriptor

          public void useDataDescriptor(boolean b)

      whether the current entry will use the data descriptor to store CRC and size information.
      Parameters:
        `b` - whether the current entry will use the data descriptor to store CRC and size information

    - #### usesEncryption

          public boolean usesEncryption()

      whether the current entry is encrypted.
      Returns:
        whether the current entry is encrypted

    - #### useEncryption

          public void useEncryption(boolean b)

      whether the current entry will be encrypted.
      Parameters:
        `b` - whether the current entry will be encrypted

    - #### usesStrongEncryption

          public boolean usesStrongEncryption()

      whether the current entry is encrypted using strong encryption.
      Returns:
        whether the current entry is encrypted using strong encryption

    - #### useStrongEncryption

          public void useStrongEncryption(boolean b)

      whether the current entry will be encrypted using strong encryption.
      Parameters:
        `b` - whether the current entry will be encrypted using strong encryption

    - #### encode

          public byte[] encode()

      Encodes the set bits in a form suitable for ZIP archives.
      Returns:
        the encoded general purpose bits

    - #### encode

          public void encode(byte[] buf,
                    int offset)

      Encodes the set bits in a form suitable for ZIP archives.
      Parameters:
        `buf` - the output buffer
        `offset` - The offset within the output buffer of the first byte to be written. must be non-negative and no larger than `buf.length-2`

    - #### parse

          public static GeneralPurposeBit parse(byte[] data,
                                int offset)

      Parses the supported flags from the given archive data.
      Parameters:
        `data` - local file header or a central directory entry.
        `offset` - offset at which the general purpose bit starts
      Returns:
        parsed flags

    - #### hashCode

          public int hashCode()

      Overrides:
        `hashCode` in class `Object`

    - #### equals

          public boolean equals(Object o)

      Overrides:
        `equals` in class `Object`

    - #### clone

          public Object clone()

      Overrides:
        `clone` in class `Object`

Copyright © 2016 The Apache Software Foundation. All rights reserved.