Package org.apache.tomcat.util.scan

## Class JarFileUrlJar

- java.lang.Object
- - org.apache.tomcat.util.scan.JarFileUrlJar

All Implemented Interfaces:
  `java.lang.AutoCloseable`, `Jar`

    public class JarFileUrlJar
    extends java.lang.Object
    implements Jar

Implementation of `Jar` that is optimised for file based JAR URLs that refer directly to a JAR file (e.g URLs of the form jar:file: ... .jar!/ or file:... .jar).

### Constructor Summary

Constructors
`JarFileUrlJar​(java.net.URL url, boolean startsWithJar)`

### Method Summary

All Methods Instance Methods Concrete Methods Deprecated Methods
`void` `close()` Close any resources associated with this JAR.
`boolean` `entryExists​(java.lang.String name)` Deprecated.
`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.

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

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

### Constructor Detail

#### JarFileUrlJar

    public JarFileUrlJar​(java.net.URL url,
                         boolean startsWithJar)
                  throws java.io.IOException

Throws:
  `java.io.IOException`

### Method Detail

#### getJarFileURL

    public java.net.URL getJarFileURL()

Specified by:
  `getJarFileURL` in interface `Jar`
Returns:
  The URL for accessing the JAR file.

#### entryExists

    @Deprecated
    public boolean entryExists​(java.lang.String name)

Deprecated.
Description copied from interface: `Jar`
Determines if a specific entry exists within the JAR.

Specified by:
  `entryExists` in interface `Jar`
Parameters:
  `name` - Entry to look for
Returns:
  Implementations will always return `false`

#### getInputStream

    public java.io.InputStream getInputStream​(java.lang.String name)
                                       throws java.io.IOException

Description copied from interface: `Jar`
Obtain an `InputStream` for a given entry in a JAR. The caller is responsible for closing the stream.

Specified by:
  `getInputStream` in interface `Jar`
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

    public long getLastModified​(java.lang.String name)
                         throws java.io.IOException

Description copied from interface: `Jar`
Obtain the last modified time for the given resource in the JAR.

Specified by:
  `getLastModified` in interface `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

    public boolean exists​(java.lang.String name)
                   throws java.io.IOException

Description copied from interface: `Jar`
Determine if the given resource in present in the JAR.

Specified by:
  `exists` in interface `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

#### getURL

    public java.lang.String getURL​(java.lang.String entry)

Description copied from interface: `Jar`
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.

Specified by:
  `getURL` in interface `Jar`
Parameters:
  `entry` - The entry to generate the URL for
Returns:
  a URL for the specified entry in the JAR

#### close

    public void close()

Description copied from interface: `Jar`
Close any resources associated with this JAR.

Specified by:
  `close` in interface `java.lang.AutoCloseable`
Specified by:
  `close` in interface `Jar`

#### nextEntry

    public void nextEntry()

Description copied from interface: `Jar`
Moves the internal pointer to the next entry in the JAR.

Specified by:
  `nextEntry` in interface `Jar`

#### getEntryName

    public java.lang.String getEntryName()

Description copied from interface: `Jar`
Obtains the name of the current entry.

Specified by:
  `getEntryName` in interface `Jar`
Returns:
  The entry name

#### getEntryInputStream

    public java.io.InputStream getEntryInputStream()
                                            throws java.io.IOException

Description copied from interface: `Jar`
Obtains the input stream for the current entry.

Specified by:
  `getEntryInputStream` in interface `Jar`
Returns:
  The input stream
Throws:
  `java.io.IOException` - If the stream cannot be obtained

#### getManifest

    public java.util.jar.Manifest getManifest()
                                       throws java.io.IOException

Description copied from interface: `Jar`
Obtain the manifest for the JAR file.

Specified by:
  `getManifest` in interface `Jar`
Returns:
  The manifest for this JAR file.
Throws:
  `java.io.IOException` - If an I/O error occurs trying to obtain the manifest

#### reset

    public void reset()
               throws java.io.IOException

Description copied from interface: `Jar`
Resets the internal pointer used to track JAR entries to the beginning of the JAR.

Specified by:
  `reset` in interface `Jar`
Throws:
  `java.io.IOException` - If the pointer cannot be reset