Package org.apache.commons.compress.archivers.ar

# Class ArArchiveEntry

java.lang.Object
org.apache.commons.compress.archivers.ar.ArArchiveEntry

All Implemented Interfaces:
  `ArchiveEntry`

public class ArArchiveEntry extends Object implements ArchiveEntry
Represents an archive entry in the "ar" format.

Each AR archive starts with "!<arch>" followed by a LF. After these 8 bytes the archive entries are listed. The format of an entry header is as it follows:

     START BYTE   END BYTE    NAME                    FORMAT      LENGTH
     0            15          File name               ASCII       16
     16           27          Modification timestamp  Decimal     12
     28           33          Owner ID                Decimal     6
     34           39          Group ID                Decimal     6
     40           47          File mode               Octal       8
     48           57          File size (bytes)       Decimal     10
     58           59          File magic              \140\012    2

This specifies that an ar archive entry header contains 60 bytes.

Due to the limitation of the file name length to 16 bytes GNU and BSD has their own variants of this format. Currently Commons Compress can read but not write the GNU variant. It fully supports the BSD variant.

See Also:
  - ar man page
This class is immutable

- ## Field Summary

  Fields
  Modifier and Type
  Field
  Description
  `static final String`
  `HEADER`
  The header for each entry
  `static final String`
  `TRAILER`
  The trailer for each entry `0x60 0x0A`

  ### Fields inherited from interface org.apache.commons.compress.archivers.ArchiveEntry

  `SIZE_UNKNOWN`

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `ArArchiveEntry(File inputFile, String entryName)`
  Creates a new instance using the attributes of the given file
  `ArArchiveEntry(String name, long length)`
  Constructs a new instance using a couple of default values.
  `ArArchiveEntry(String name, long length, int userId, int groupId, int mode, long lastModified)`
  Constructs a new instance.
  `ArArchiveEntry(Path inputPath, String entryName, LinkOption... options)`
  Creates a new instance using the attributes of the given file

- ## Method Summary

  Modifier and Type
  Method
  Description
  `boolean`
  `equals(Object obj)`
  `int`
  `getGroupId()`
  Gets the group ID.
  `long`
  `getLastModified()`
  Gets the last modified time in seconds since the epoch.
  `Date`
  `getLastModifiedDate()`
  Gets the last modified date of this entry.
  `long`
  `getLength()`
  Gets the length.
  `int`
  `getMode()`
  Gets the mode.
  `String`
  `getName()`
  Gets the name of the entry in this archive.
  `long`
  `getSize()`
  Gets the uncompressed size of this entry.
  `int`
  `getUserId()`
  Gets the user ID.
  `int`
  `hashCode()`
  `boolean`
  `isDirectory()`
  Tests whether this entry refers to a directory (true).

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

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

  ### Methods inherited from interface org.apache.commons.compress.archivers.ArchiveEntry

  `resolveIn`

- ## Field Details

  - ### HEADER

    public static final String HEADER
    The header for each entry
    See Also:
      - Constant Field Values

  - ### TRAILER

    public static final String TRAILER
    The trailer for each entry `0x60 0x0A`
    See Also:
      - Constant Field Values

- ## Constructor Details

  - ### ArArchiveEntry

    public ArArchiveEntry(File inputFile, String entryName)
    Creates a new instance using the attributes of the given file
    Parameters:
      `inputFile` - the file to create an entry from
      `entryName` - the name of the entry

  - ### ArArchiveEntry

    public ArArchiveEntry(Path inputPath, String entryName, LinkOption... options) throws IOException
    Creates a new instance using the attributes of the given file
    Parameters:
      `inputPath` - the file to create an entry from
      `entryName` - the name of the entry
      `options` - options indicating how symbolic links are handled.
    Throws:
      `IOException` - if an I/O error occurs.
    Since:
      1.21

  - ### ArArchiveEntry

    public ArArchiveEntry(String name, long length)
    Constructs a new instance using a couple of default values.

    Sets userId and groupId to 0, the octal file mode to 644 and the last modified time to the current time.

    Parameters:
      `name` - name of the entry
      `length` - length of the entry in bytes

  - ### ArArchiveEntry

    public ArArchiveEntry(String name, long length, int userId, int groupId, int mode, long lastModified)
    Constructs a new instance.
    Parameters:
      `name` - name of the entry
      `length` - length of the entry in bytes
      `userId` - numeric user id
      `groupId` - numeric group id
      `mode` - file mode
      `lastModified` - last modified time in seconds since the epoch

- ## Method Details

  - ### equals

    public boolean equals(Object obj)
    Overrides:
      `equals` in class `Object`

  - ### getGroupId

    public int getGroupId()
    Gets the group ID.
    Returns:
      the group ID.

  - ### getLastModified

    public long getLastModified()
    Gets the last modified time in seconds since the epoch.
    Returns:
      the last modified date.

  - ### getLastModifiedDate

    public Date getLastModifiedDate()
    Description copied from interface: `ArchiveEntry`
    Gets the last modified date of this entry.
    Specified by:
      `getLastModifiedDate` in interface `ArchiveEntry`
    Returns:
      the last modified date of this entry.

  - ### getLength

    public long getLength()
    Gets the length.
    Returns:
      the length.

  - ### getMode

    public int getMode()
    Gets the mode.
    Returns:
      the mode.

  - ### getName

    public String getName()
    Description copied from interface: `ArchiveEntry`
    Gets the name of the entry in this archive. May refer to a file or directory or other item.

    This method returns the raw name as it is stored inside of the archive.

    Specified by:
      `getName` in interface `ArchiveEntry`
    Returns:
      The name of this entry in the archive.

  - ### getSize

    public long getSize()
    Description copied from interface: `ArchiveEntry`
    Gets the uncompressed size of this entry. May be -1 (SIZE_UNKNOWN) if the size is unknown
    Specified by:
      `getSize` in interface `ArchiveEntry`
    Returns:
      the uncompressed size of this entry.

  - ### getUserId

    public int getUserId()
    Gets the user ID.
    Returns:
      the user ID.

  - ### hashCode

    public int hashCode()
    Overrides:
      `hashCode` in class `Object`

  - ### isDirectory

    public boolean isDirectory()
    Description copied from interface: `ArchiveEntry`
    Tests whether this entry refers to a directory (true).
    Specified by:
      `isDirectory` in interface `ArchiveEntry`
    Returns:
      true if this entry refers to a directory.