Class ZipEntry

  • All Implemented Interfaces:
    java.lang.Cloneable

    public class ZipEntry
    extends java.util.zip.ZipEntry
    Extension that adds better handling of extra fields and provides access to the internal and external file attributes.
    Version:
    $Revision: 155439 $
    Author:
    Stefan Bodewig
    • Constructor Detail

      • ZipEntry

        public ZipEntry​(java.lang.String name)
        Creates a new zip entry with the specified name.
        Parameters:
        name - the name of entry
        Since:
        1.1
      • ZipEntry

        public ZipEntry​(java.util.zip.ZipEntry entry)
                 throws java.util.zip.ZipException
        Creates a new zip entry with fields taken from the specified zip entry.
        Parameters:
        entry - the JDK ZipEntry to adapt
        Throws:
        java.util.zip.ZipException - if can not create entry
        Since:
        1.1
      • ZipEntry

        public ZipEntry​(ZipEntry entry)
                 throws java.util.zip.ZipException
        Creates a new zip entry with fields taken from the specified zip entry.
        Parameters:
        entry - the entry to adapt
        Throws:
        java.util.zip.ZipException - if can not create entry
        Since:
        1.1
    • Method Detail

      • checkSCS

        private static void checkSCS()
        Try to get a handle to the setCompressedSize method.
        Since:
        1.2
      • haveSetCompressedSize

        private static boolean haveSetCompressedSize()
        Are we running JDK 1.2 or higher?
        Returns:
        Description of the Returned Value
        Since:
        1.2
      • performSetCompressedSize

        private static void performSetCompressedSize​(ZipEntry entry,
                                                     long size)
        Invoke setCompressedSize via reflection.
        Parameters:
        entry - Description of Parameter
        size - Description of Parameter
        Since:
        1.2
      • setComprSize

        public void setComprSize​(long size)
        Make this class work in JDK 1.1 like a 1.2 class.

        This either stores the size for later usage or invokes setCompressedSize via reflection.

        Parameters:
        size - The new ComprSize value
        Since:
        1.2
      • setExternalAttributes

        public void setExternalAttributes​(long externalAttributes)
        Sets the external file attributes.
        Parameters:
        externalAttributes - The new ExternalAttributes value
        Since:
        1.1
      • setExtra

        public void setExtra​(byte[] extra)
                      throws java.lang.RuntimeException
        Throws an Exception if extra data cannot be parsed into extra fields.
        Overrides:
        setExtra in class java.util.zip.ZipEntry
        Parameters:
        extra - The new Extra value
        Throws:
        java.lang.RuntimeException - if fail to set extra data
        Since:
        1.1
      • setExtraFields

        public void setExtraFields​(ZipExtraField[] fields)
        Replaces all currently attached extra fields with the new array.
        Parameters:
        fields - The new ExtraFields value
        Since:
        1.1
      • setInternalAttributes

        public void setInternalAttributes​(int value)
        Sets the internal file attributes.
        Parameters:
        value - The new InternalAttributes value
        Since:
        1.1
      • getCentralDirectoryExtra

        public byte[] getCentralDirectoryExtra()
        Retrieves the extra data for the central directory.
        Returns:
        The CentralDirectoryExtra value
        Since:
        1.1
      • getCompressedSize

        public long getCompressedSize()
        Override to make this class work in JDK 1.1 like a 1.2 class.
        Overrides:
        getCompressedSize in class java.util.zip.ZipEntry
        Returns:
        The CompressedSize value
        Since:
        1.2
      • getExternalAttributes

        public long getExternalAttributes()
        Retrieves the external file attributes.
        Returns:
        The ExternalAttributes value
        Since:
        1.1
      • getExtraFields

        public ZipExtraField[] getExtraFields()
        Retrieves extra fields.
        Returns:
        The ExtraFields value
        Since:
        1.1
      • getInternalAttributes

        public int getInternalAttributes()
        Retrieves the internal file attributes.
        Returns:
        The InternalAttributes value
        Since:
        1.1
      • getLocalFileDataExtra

        public byte[] getLocalFileDataExtra()
        Retrieves the extra data for the local file data.
        Returns:
        The LocalFileDataExtra value
        Since:
        1.1
      • addExtraField

        public void addExtraField​(ZipExtraField extraField)
        Adds an extra fields - replacing an already present extra field of the same type.
        Parameters:
        extraField - The feature to be added to the ExtraField attribute
        Since:
        1.1
      • clone

        public java.lang.Object clone()
        Overwrite clone
        Overrides:
        clone in class java.util.zip.ZipEntry
        Returns:
        Description of the Returned Value
        Since:
        1.1
      • removeExtraField

        public void removeExtraField​(ZipShort type)
        Remove an extra fields.
        Parameters:
        type - Description of Parameter
        Since:
        1.1
      • setExtra

        protected void setExtra()
        Unfortunately java.util.zip.ZipOutputStream seems to access the extra data directly, so overriding getExtra doesn't help - we need to modify super's data directly.
        Since:
        1.1