org.springframework.core.io

## Class UrlResource

- java.lang.Object
- - org.springframework.core.io.AbstractResource
  - - org.springframework.core.io.AbstractFileResolvingResource
    - - org.springframework.core.io.UrlResource

All Implemented Interfaces:
  InputStreamSource, Resource

    public class UrlResource
    extends AbstractFileResolvingResource

`Resource` implementation for `java.net.URL` locators. Obviously supports resolution as URL, and also as File in case of the "file:" protocol.

Since:
  28.12.2003
Author:
  Juergen Hoeller
See Also:
  `URL`

### Constructor Summary

Constructors
Constructor and Description
`UrlResource(String path)` Create a new UrlResource.
`UrlResource(URI uri)` Create a new UrlResource.
`UrlResource(URL url)` Create a new UrlResource.

### Method Summary

Methods
`Resource` `createRelative(String relativePath)` This implementation creates a UrlResource, applying the given path relative to the path of the underlying URL of this resource descriptor.
`boolean` `equals(Object obj)` This implementation compares the underlying URL references.
`String` `getDescription()` This implementation returns a description that includes the URL.
`File` `getFile()` This implementation returns a File reference for the underlying URL/URI, provided that it refers to a file in the file system.
`String` `getFilename()` This implementation returns the name of the file that this URL refers to.
`InputStream` `getInputStream()` This implementation opens an InputStream for the given URL.
`URI` `getURI()` This implementation returns the underlying URI directly, if possible.
`URL` `getURL()` This implementation returns the underlying URL reference.
`int` `hashCode()` This implementation returns the hash code of the underlying URL reference.

### Methods inherited from class org.springframework.core.io.AbstractFileResolvingResource

`contentLength, exists, getFile, getFileForLastModifiedCheck, isReadable, lastModified`

### Methods inherited from class org.springframework.core.io.AbstractResource

`isOpen, toString`

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

`clone, finalize, getClass, notify, notifyAll, wait, wait, wait`

### Constructor Detail

#### UrlResource

    public UrlResource(URL url)

Create a new UrlResource.

Parameters:
  `url` - a URL

#### UrlResource

    public UrlResource(URI uri)
                throws MalformedURLException

Create a new UrlResource.

Parameters:
  `uri` - a URI
Throws:
  `MalformedURLException` - if the given URL path is not valid

#### UrlResource

    public UrlResource(String path)
                throws MalformedURLException

Create a new UrlResource.

Parameters:
  `path` - a URL path
Throws:
  `MalformedURLException` - if the given URL path is not valid

### Method Detail

#### getInputStream

    public InputStream getInputStream()
                               throws IOException

This implementation opens an InputStream for the given URL. It sets the "UseCaches" flag to `false`, mainly to avoid jar file locking on Windows.

Returns:
  the input stream for the underlying resource (must not be `null`)
Throws:
  `IOException` - if the stream could not be opened
See Also:
  `URL.openConnection()`, `URLConnection.setUseCaches(boolean)`, `URLConnection.getInputStream()`

#### getURL

    public URL getURL()
               throws IOException

This implementation returns the underlying URL reference.

Specified by:
  `getURL` in interface `Resource`
Overrides:
  `getURL` in class `AbstractResource`
Throws:
  `IOException` - if the resource cannot be resolved as URL, i.e. if the resource is not available as descriptor

#### getURI

    public URI getURI()
               throws IOException

This implementation returns the underlying URI directly, if possible.

Specified by:
  `getURI` in interface `Resource`
Overrides:
  `getURI` in class `AbstractResource`
Throws:
  `IOException` - if the resource cannot be resolved as URI, i.e. if the resource is not available as descriptor

#### getFile

    public File getFile()
                 throws IOException

This implementation returns a File reference for the underlying URL/URI, provided that it refers to a file in the file system.

Specified by:
  `getFile` in interface `Resource`
Overrides:
  `getFile` in class `AbstractFileResolvingResource`
Throws:
  `IOException` - if the resource cannot be resolved as absolute file path, i.e. if the resource is not available in a file system
See Also:
  `ResourceUtils.getFile(java.net.URL, String)`

#### createRelative

    public Resource createRelative(String relativePath)
                            throws MalformedURLException

This implementation creates a UrlResource, applying the given path relative to the path of the underlying URL of this resource descriptor.

Specified by:
  `createRelative` in interface `Resource`
Overrides:
  `createRelative` in class `AbstractResource`
Parameters:
  `relativePath` - the relative path (relative to this resource)
Returns:
  the resource handle for the relative resource
Throws:
  `MalformedURLException`
See Also:
  `URL.URL(java.net.URL, String)`

#### getFilename

    public String getFilename()

This implementation returns the name of the file that this URL refers to.

Specified by:
  `getFilename` in interface `Resource`
Overrides:
  `getFilename` in class `AbstractResource`
See Also:
  `URL.getFile()`, `File.getName()`

#### getDescription

    public String getDescription()

This implementation returns a description that includes the URL.

See Also:
  `Object.toString()`

#### equals

    public boolean equals(Object obj)

This implementation compares the underlying URL references.

Overrides:
  `equals` in class `AbstractResource`
See Also:
  `Resource.getDescription()`

#### hashCode

    public int hashCode()

This implementation returns the hash code of the underlying URL reference.

Overrides:
  `hashCode` in class `AbstractResource`
See Also:
  `Resource.getDescription()`