Class X000A_NTFS
java.lang.Object
org.apache.commons.compress.archivers.zip.X000A_NTFS
- All Implemented Interfaces:
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
-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate ZipEightByteInteger
private ZipEightByteInteger
static final ZipShort
The header ID for this extra field.private ZipEightByteInteger
private static final ZipShort
private static final ZipShort
Fields inherited from interface org.apache.commons.compress.archivers.zip.ZipExtraField
EXTRAFIELD_HEADER_SIZE
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionprivate static ZipEightByteInteger
boolean
private static ZipEightByteInteger
fileTimeToZip
(FileTime time) Gets the access time as aFileTime
of this ZIP entry, or null if no such timestamp exists in the ZIP entry.Gets the access time as a java.util.Date of this ZIP entry, or null if no such timestamp exists in the ZIP entry.Gets the "File last access time" of this ZIP entry as a ZipEightByteInteger object, orZipEightByteInteger.ZERO
if no such timestamp exists in the ZIP entry.byte[]
Gets the actual data to put into central directory data - without Header-ID or length specifier.Gets the length of the extra field in the local file data - without Header-ID or length specifier.Gets the create time as aFileTime
of this ZIP entry, or null if no such timestamp exists in the ZIP entry.Gets the create time as a java.util.Date of this ZIP entry, or null if no such timestamp exists in the ZIP entry.Gets the "File creation time" of this ZIP entry as a ZipEightByteInteger object, orZipEightByteInteger.ZERO
if no such timestamp exists in the ZIP entry.Gets the Header-ID.byte[]
Gets the actual data to put into local file data - without Header-ID or length specifier.Gets the length of the extra field in the local file data - without Header-ID or length specifier.Gets the modify time as aFileTime
of this ZIP entry, or null if no such timestamp exists in the ZIP entry.Gets the modify time as a java.util.Date of this ZIP entry, or null if no such timestamp exists in the ZIP entry.Gets the "File last modification time" of this ZIP entry as a ZipEightByteInteger object, orZipEightByteInteger.ZERO
if no such timestamp exists in the ZIP entry.int
hashCode()
void
parseFromCentralDirectoryData
(byte[] buffer, int offset, int length) Doesn't do anything special since this class always uses the same parsing logic for both central directory and local file data.void
parseFromLocalFileData
(byte[] data, int offset, int length) Populate data from this array as if it was in local file data.private void
readTimeAttr
(byte[] data, int offset, int length) private void
reset()
Reset state back to newly constructed state.void
setAccessFileTime
(FileTime time) Sets the access time.void
Sets the access time as a java.util.Date of this ZIP entry.void
Sets the File last access time of this ZIP entry using a ZipEightByteInteger object.void
setCreateFileTime
(FileTime time) Sets the create time.void
Sets the create time as a java.util.Date of this ZIP entry.void
Sets the File creation time of this ZIP entry using a ZipEightByteInteger object.void
setModifyFileTime
(FileTime time) Sets the modify time.void
Sets the modify time as a java.util.Date of this ZIP entry.void
Sets the File last modification time of this ZIP entry using a ZipEightByteInteger object.toString()
Returns a String representation of this class useful for debugging purposes.private static Date
private static FileTime
-
Field Details
-
HEADER_ID
The header ID for this extra field.- Since:
- 1.23
-
TIME_ATTR_TAG
-
TIME_ATTR_SIZE
-
modifyTime
-
accessTime
-
createTime
-
-
Constructor Details
-
X000A_NTFS
public X000A_NTFS()
-
-
Method Details
-
dateToZip
-
fileTimeToZip
-
zipToDate
-
zipToFileTime
-
equals
-
getAccessFileTime
Gets the access time as aFileTime
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, orZipEightByteInteger.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 interfaceZipExtraField
- 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 interfaceZipExtraField
- Returns:
- a
ZipShort
for the length of the data of this extra field
-
getCreateFileTime
Gets the create time as aFileTime
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, orZipEightByteInteger.ZERO
if no such timestamp exists in the ZIP entry.- Returns:
- File creation time
-
getHeaderId
Gets the Header-ID.- Specified by:
getHeaderId
in interfaceZipExtraField
- 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 interfaceZipExtraField
- 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 interfaceZipExtraField
- Returns:
- a
ZipShort
for the length of the data of this extra field
-
getModifyFileTime
Gets the modify time as aFileTime
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, orZipEightByteInteger.ZERO
if no such timestamp exists in the ZIP entry.- Returns:
- File last modification time
-
hashCode
public int hashCode() -
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 interfaceZipExtraField
- Parameters:
buffer
- the buffer to read data fromoffset
- offset into buffer to read datalength
- the length of data- Throws:
ZipException
- on error
-
parseFromLocalFileData
Populate data from this array as if it was in local file data.- Specified by:
parseFromLocalFileData
in interfaceZipExtraField
- Parameters:
data
- an array of bytesoffset
- the start offsetlength
- the number of bytes in the array from offset- Throws:
ZipException
- on error
-
readTimeAttr
private void readTimeAttr(byte[] data, int offset, int length) -
reset
private void reset()Reset state back to newly constructed state. Helps us make sure parse() calls always generate clean results. -
setAccessFileTime
Sets the access time.- Parameters:
time
- access time as aFileTime
- Since:
- 1.23
-
setAccessJavaTime
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
Sets the create time.- Parameters:
time
- create time as aFileTime
- Since:
- 1.23
-
setCreateJavaTime
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
Sets the modify time.- Parameters:
time
- modify time as aFileTime
- Since:
- 1.23
-
setModifyJavaTime
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
Returns a String representation of this class useful for debugging purposes.
-