## org.springframework.core.io
Interface Resource

All Superinterfaces:
  InputStreamSource

All Known Subinterfaces:
  ContextResource

All Known Implementing Classes:
  AbstractFileResolvingResource, AbstractResource, ByteArrayResource, ClassPathResource, DescriptiveResource, FileSystemResource, InputStreamResource, PortletContextResource, ServletContextResource, UrlResource, VfsResource

    public interface Resource

extends InputStreamSource

Interface for a resource descriptor that abstracts from the actual type of underlying resource, such as a file or class path resource.

An InputStream can be opened for every resource if it exists in physical form, but a URL or File handle can just be returned for certain resources. The actual behavior is implementation-specific.

Since:
  28.12.2003
Author:
  Juergen Hoeller
See Also:
  `InputStreamSource.getInputStream()`, `getURL()`, `getURI()`, `getFile()`, `FileSystemResource`, `ClassPathResource`, `UrlResource`, `ByteArrayResource`, `InputStreamResource`, `ServletContextResource`

Method Summary
`long` `contentLength()` Determine the content length for this resource.
`Resource` `createRelative(String relativePath)` Create a resource relative to this resource.
`boolean` `exists()` Return whether this resource actually exists in physical form.
`String` `getDescription()` Return a description for this resource, to be used for error output when working with the resource.
`File` `getFile()` Return a File handle for this resource.
`String` `getFilename()` Return a filename for this resource, i.e.
`URI` `getURI()` Return a URI handle for this resource.
`URL` `getURL()` Return a URL handle for this resource.
`boolean` `isOpen()` Return whether this resource represents a handle with an open stream.
`boolean` `isReadable()` Return whether the contents of this resource can be read, e.g.
`long` `lastModified()` Determine the last-modified timestamp for this resource.

Methods inherited from interface org.springframework.core.io.InputStreamSource
`getInputStream`

Method Detail

### exists

    boolean exists()

  Return whether this resource actually exists in physical form.

  This method performs a definitive existence check, whereas the existence of a `Resource` handle only guarantees a valid descriptor handle.

### isReadable

    boolean isReadable()

  Return whether the contents of this resource can be read, e.g. via `InputStreamSource.getInputStream()` or `getFile()`.

  Will be `true` for typical resource descriptors; note that actual content reading may still fail when attempted. However, a value of `false` is a definitive indication that the resource content cannot be read.

### isOpen

    boolean isOpen()

  Return whether this resource represents a handle with an open stream. If true, the InputStream cannot be read multiple times, and must be read and closed to avoid resource leaks.

  Will be `false` for typical resource descriptors.

### getURL

    URL getURL()
               throws IOException

  Return a URL handle for this resource.

  Throws:
    `IOException` - if the resource cannot be resolved as URL, i.e. if the resource is not available as descriptor

### getURI

    URI getURI()
               throws IOException

  Return a URI handle for this resource.

  Throws:
    `IOException` - if the resource cannot be resolved as URI, i.e. if the resource is not available as descriptor

### getFile

    File getFile()
                 throws IOException

  Return a File handle for this resource.

  Throws:
    `IOException` - if the resource cannot be resolved as absolute file path, i.e. if the resource is not available in a file system

### contentLength

    long contentLength()
                       throws IOException

  Determine the content length for this resource.

  Throws:
    `IOException` - if the resource cannot be resolved (in the file system or as some other known physical resource type)

### lastModified

    long lastModified()
                      throws IOException

  Determine the last-modified timestamp for this resource.

  Throws:
    `IOException` - if the resource cannot be resolved (in the file system or as some other known physical resource type)

### createRelative

    Resource createRelative(String relativePath)
                            throws IOException

  Create a resource relative to this resource.

  Parameters:
    `relativePath` - the relative path (relative to this resource)
  Returns:
    the resource handle for the relative resource
  Throws:
    `IOException` - if the relative resource cannot be determined

### getFilename

    String getFilename()

  Return a filename for this resource, i.e. typically the last part of the path: for example, "myfile.txt".

### getDescription

    String getDescription()

  Return a description for this resource, to be used for error output when working with the resource.

  Implementations are also encouraged to return this value from their `toString` method.

  See Also:
    `Object.toString()`