Interface Jar

  • All Superinterfaces:
    java.lang.AutoCloseable
    All Known Implementing Classes:
    AbstractInputStreamJar, JarFileUrlJar, JarFileUrlNestedJar, ReferenceCountedJar, UrlJar

    public interface Jar
    extends java.lang.AutoCloseable
    Provides an abstraction for use by the various classes that need to scan JARs. The classes provided by the JRE for accessing JARs (JarFile and JarInputStream) have significantly different performance characteristics depending on the form of the URL used to access the JAR. For file based JAR URLs, JarFile is faster but for non-file based URLs, JarFile creates a copy of the JAR in the temporary directory so JarInputStream is faster.
    • Method Summary

      All Methods Instance Methods Abstract Methods 
      Modifier and Type Method Description
      void close()
      Close any resources associated with this JAR.
      boolean exists​(java.lang.String name)
      Determine if the given resource in present in the JAR.
      java.io.InputStream getEntryInputStream()
      Obtains the input stream for the current entry.
      java.lang.String getEntryName()
      Obtains the name of the current entry.
      java.io.InputStream getInputStream​(java.lang.String name)
      Obtain an InputStream for a given entry in a JAR.
      java.net.URL getJarFileURL()  
      long getLastModified​(java.lang.String name)
      Obtain the last modified time for the given resource in the JAR.
      java.util.jar.Manifest getManifest()
      Obtain the manifest for the JAR file.
      java.lang.String getURL​(java.lang.String entry)
      Obtain, in String form, the URL for an entry in this JAR.
      void nextEntry()
      Moves the internal pointer to the next entry in the JAR.
      void reset()
      Resets the internal pointer used to track JAR entries to the beginning of the JAR.
    • Method Detail

      • getJarFileURL

        java.net.URL getJarFileURL()
        Returns:
        The URL for accessing the JAR file.
      • getInputStream

        java.io.InputStream getInputStream​(java.lang.String name)
                                    throws java.io.IOException
        Obtain an InputStream for a given entry in a JAR. The caller is responsible for closing the stream.
        Parameters:
        name - Entry to obtain an InputStream for
        Returns:
        An InputStream for the specified entry or null if the entry does not exist
        Throws:
        java.io.IOException - if an I/O error occurs while processing the JAR file
      • getLastModified

        long getLastModified​(java.lang.String name)
                      throws java.io.IOException
        Obtain the last modified time for the given resource in the JAR.
        Parameters:
        name - Entry to obtain the modification time for
        Returns:
        The time (in the same format as System.currentTimeMillis() that the resource was last modified. Returns -1 if the entry does not exist
        Throws:
        java.io.IOException - if an I/O error occurs while processing the JAR file
      • exists

        boolean exists​(java.lang.String name)
                throws java.io.IOException
        Determine if the given resource in present in the JAR.
        Parameters:
        name - Entry to look for
        Returns:
        true if the entry is present in the JAR, otherwise false
        Throws:
        java.io.IOException - if an I/O error occurs while processing the JAR file
      • close

        void close()
        Close any resources associated with this JAR.
        Specified by:
        close in interface java.lang.AutoCloseable
      • nextEntry

        void nextEntry()
        Moves the internal pointer to the next entry in the JAR.
      • getEntryName

        java.lang.String getEntryName()
        Obtains the name of the current entry.
        Returns:
        The entry name
      • getEntryInputStream

        java.io.InputStream getEntryInputStream()
                                         throws java.io.IOException
        Obtains the input stream for the current entry.
        Returns:
        The input stream
        Throws:
        java.io.IOException - If the stream cannot be obtained
      • getURL

        java.lang.String getURL​(java.lang.String entry)
        Obtain, in String form, the URL for an entry in this JAR. Note that for JARs nested in WAR files, the Tomcat specific war:file:... form will not be used, rather the jar:jar:file:... form (that the JRE does not understand will be used). Note that this means that any code using these URLs will need to understand the jar:jar:file:... form and use the JarFactory to ensure resources are accessed correctly.
        Parameters:
        entry - The entry to generate the URL for
        Returns:
        a URL for the specified entry in the JAR
      • getManifest

        java.util.jar.Manifest getManifest()
                                    throws java.io.IOException
        Obtain the manifest for the JAR file.
        Returns:
        The manifest for this JAR file.
        Throws:
        java.io.IOException - If an I/O error occurs trying to obtain the manifest
      • reset

        void reset()
            throws java.io.IOException
        Resets the internal pointer used to track JAR entries to the beginning of the JAR.
        Throws:
        java.io.IOException - If the pointer cannot be reset