Package: org.grails.io.support

## [Java] Interface Resource

- 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.

  Authors:
    Juergen Hoeller
  See Also:
    getURL()
    getURI()
    getFile()
  Since:
    28.12.2003

- - ### Methods Summary

    Methods
    Type Params | Return Type | Name and description
    --- | --- | ---
    `` | `long` | `contentLength()` Determine the content length for this resource.
    `` | `Resource` | `createRelative(java.lang.String relativePath)` Creates a new resource relative to this one
    `` | `boolean` | `exists()` Return whether this resource actually exists in physical form.
    `` | `java.lang.String` | `getDescription()` Return a description for this resource, to be used for error output when working with the resource.
    `` | `java.io.File` | `getFile()` Return a File handle for this resource.
    `` | `java.lang.String` | `getFilename()` Determine a filename for this resource, i.e. typically the last part of the path: for example, "myfile.txt".
    `` | `java.io.InputStream` | `getInputStream()` An input stream
    `` | `java.net.URI` | `getURI()` Return a URI handle for this resource.
    `` | `java.net.URL` | `getURL()` Return a URL handle for this resource.
    `` | `boolean` | `isReadable()` Return whether the contents of this resource can be read, e.g. via getInputStream() or getFile().
    `` | `long` | `lastModified()` Determine the last-modified timestamp for this resource.

- - ### Method Detail

    - #### public long contentLength()

      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)

    - #### public Resource createRelative(java.lang.String relativePath)

      Creates a new resource relative to this one

      Parameters:
        `relativePath` - The relative path
      Returns:
        The new resource

    - #### public 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.

    - #### public java.lang.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:
        java.lang.Object#toString()

    - #### public java.io.File getFile()

      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

    - #### public java.lang.String getFilename()

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

      Returns `null` if this type of resource does not have a filename.

    - #### public java.io.InputStream getInputStream()

      An input stream

      Returns:
        The input stream

    - #### public java.net.URI getURI()

      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

    - #### public java.net.URL getURL()

      Return a URL handle for this resource.

      throws:
        java.io.IOException if the resource cannot be resolved as URL, i.e. if the resource is not available as descriptor

    - #### public boolean isReadable()

      Return whether the contents of this resource can be read, e.g. via 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.

      See Also:
        getInputStream()

    - #### public long lastModified()

      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)