Class X000A_NTFS

java.lang.Object
org.apache.commons.compress.archivers.zip.X000A_NTFS
All Implemented Interfaces:
ZipExtraField

public class X000A_NTFS extends Object implements ZipExtraField
NTFS extra field that was thought to store various attributes but in reality only stores timestamps.
    4.5.5 -NTFS Extra Field (0x000a):

       The following is the layout of the NTFS attributes
       "extra" block. (Note: At this time the Mtime, Atime
       and Ctime values MAY be used on any WIN32 system.)

       Note: all fields stored in Intel low-byte/high-byte order.

         Value      Size       Description
         -----      ----       -----------
 (NTFS)  0x000a     2 bytes    Tag for this "extra" block type
         TSize      2 bytes    Size of the total "extra" block
         Reserved   4 bytes    Reserved for future use
         Tag1       2 bytes    NTFS attribute tag value #1
         Size1      2 bytes    Size of attribute #1, in bytes
         (var)      Size1      Attribute #1 data
          .
          .
          .
          TagN       2 bytes    NTFS attribute tag value #N
          SizeN      2 bytes    Size of attribute #N, in bytes
          (var)      SizeN      Attribute #N data

        For NTFS, values for Tag1 through TagN are as follows:
        (currently only one set of attributes is defined for NTFS)

          Tag        Size       Description
          -----      ----       -----------
          0x0001     2 bytes    Tag for attribute #1
          Size1      2 bytes    Size of attribute #1, in bytes
          Mtime      8 bytes    File last modification time
          Atime      8 bytes    File last access time
          Ctime      8 bytes    File creation time
 
Since:
1.11
This class is not thread-safe
  • Field Details

    • HEADER_ID

      public static final ZipShort HEADER_ID
      The header ID for this extra field.
      Since:
      1.23
  • Constructor Details

  • Method Details

    • equals

      public boolean equals(Object o)
      Overrides:
      equals in class Object
    • getAccessFileTime

      Gets the access time as a FileTime of this ZIP entry, or null if no such timestamp exists in the ZIP entry.
      Returns:
      access time as a FileTime or null.
      Since:
      1.23
    • getAccessJavaTime

      Gets the access time as a java.util.Date of this ZIP entry, or null if no such timestamp exists in the ZIP entry.
      Returns:
      access time as java.util.Date or null.
    • getAccessTime

      Gets the "File last access time" of this ZIP entry as a ZipEightByteInteger object, or ZipEightByteInteger.ZERO if no such timestamp exists in the ZIP entry.
      Returns:
      File last access time
    • getCentralDirectoryData

      public byte[] getCentralDirectoryData()
      Gets the actual data to put into central directory data - without Header-ID or length specifier.
      Specified by:
      getCentralDirectoryData in interface ZipExtraField
      Returns:
      the central directory data
    • getCentralDirectoryLength

      Gets the length of the extra field in the local file data - without Header-ID or length specifier.

      For X5455 the central length is often smaller than the local length, because central cannot contain access or create timestamps.

      Specified by:
      getCentralDirectoryLength in interface ZipExtraField
      Returns:
      a ZipShort for the length of the data of this extra field
    • getCreateFileTime

      Gets the create time as a FileTime of this ZIP entry, or null if no such timestamp exists in the ZIP entry.
      Returns:
      create time as a FileTime or null.
      Since:
      1.23
    • getCreateJavaTime

      Gets the create time as a java.util.Date of this ZIP entry, or null if no such timestamp exists in the ZIP entry.
      Returns:
      create time as java.util.Date or null.
    • getCreateTime

      Gets the "File creation time" of this ZIP entry as a ZipEightByteInteger object, or ZipEightByteInteger.ZERO if no such timestamp exists in the ZIP entry.
      Returns:
      File creation time
    • getHeaderId

      Gets the Header-ID.
      Specified by:
      getHeaderId in interface ZipExtraField
      Returns:
      the value for the header id for this extrafield
    • getLocalFileDataData

      public byte[] getLocalFileDataData()
      Gets the actual data to put into local file data - without Header-ID or length specifier.
      Specified by:
      getLocalFileDataData in interface ZipExtraField
      Returns:
      get the data
    • getLocalFileDataLength

      Gets the length of the extra field in the local file data - without Header-ID or length specifier.
      Specified by:
      getLocalFileDataLength in interface ZipExtraField
      Returns:
      a ZipShort for the length of the data of this extra field
    • getModifyFileTime

      Gets the modify time as a FileTime of this ZIP entry, or null if no such timestamp exists in the ZIP entry.
      Returns:
      modify time as a FileTime or null.
      Since:
      1.23
    • getModifyJavaTime

      Gets the modify time as a java.util.Date of this ZIP entry, or null if no such timestamp exists in the ZIP entry.
      Returns:
      modify time as java.util.Date or null.
    • getModifyTime

      Gets the "File last modification time" of this ZIP entry as a ZipEightByteInteger object, or ZipEightByteInteger.ZERO if no such timestamp exists in the ZIP entry.
      Returns:
      File last modification time
    • hashCode

      public int hashCode()
      Overrides:
      hashCode in class Object
    • parseFromCentralDirectoryData

      public void parseFromCentralDirectoryData(byte[] buffer, int offset, int length) throws ZipException
      Doesn't do anything special since this class always uses the same parsing logic for both central directory and local file data.
      Specified by:
      parseFromCentralDirectoryData in interface ZipExtraField
      Parameters:
      buffer - the buffer to read data from
      offset - offset into buffer to read data
      length - the length of data
      Throws:
      ZipException - on error
    • parseFromLocalFileData

      public void parseFromLocalFileData(byte[] data, int offset, int length) throws ZipException
      Populate data from this array as if it was in local file data.
      Specified by:
      parseFromLocalFileData in interface ZipExtraField
      Parameters:
      data - an array of bytes
      offset - the start offset
      length - the number of bytes in the array from offset
      Throws:
      ZipException - on error
    • setAccessFileTime

      public void setAccessFileTime(FileTime time)
      Sets the access time.
      Parameters:
      time - access time as a FileTime
      Since:
      1.23
    • setAccessJavaTime

      public void setAccessJavaTime(Date d)
      Sets the access time as a java.util.Date of this ZIP entry.
      Parameters:
      d - access time as java.util.Date
    • setAccessTime

      Sets the File last access time of this ZIP entry using a ZipEightByteInteger object.
      Parameters:
      t - ZipEightByteInteger of the access time
    • setCreateFileTime

      public void setCreateFileTime(FileTime time)
      Sets the create time.
      Parameters:
      time - create time as a FileTime
      Since:
      1.23
    • setCreateJavaTime

      public void setCreateJavaTime(Date d)

      Sets the create time as a java.util.Date of this ZIP entry. Supplied value is truncated to per-second precision (milliseconds zeroed-out).

      Note: the setters for flags and timestamps are decoupled. Even if the timestamp is not-null, it will only be written out if the corresponding bit in the flags is also set.

      Parameters:
      d - create time as java.util.Date
    • setCreateTime

      Sets the File creation time of this ZIP entry using a ZipEightByteInteger object.
      Parameters:
      t - ZipEightByteInteger of the create time
    • setModifyFileTime

      public void setModifyFileTime(FileTime time)
      Sets the modify time.
      Parameters:
      time - modify time as a FileTime
      Since:
      1.23
    • setModifyJavaTime

      public void setModifyJavaTime(Date d)
      Sets the modify time as a java.util.Date of this ZIP entry.
      Parameters:
      d - modify time as java.util.Date
    • setModifyTime

      Sets the File last modification time of this ZIP entry using a ZipEightByteInteger object.
      Parameters:
      t - ZipEightByteInteger of the modify time
    • toString

      public String toString()
      Returns a String representation of this class useful for debugging purposes.
      Overrides:
      toString in class Object
      Returns:
      A String representation of this class useful for debugging purposes.