Interface Resource

All Superinterfaces:
InputStreamResource
All Known Implementing Classes:
AbstractFileResolvingResource, AbstractResource, ClassPathResource, ExternalResource

public interface Resource extends InputStreamResource
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.

See Also:
  • Method Details

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

      Returns:
      if exists
    • isReadable

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

      Returns:
      if readable
      See Also:
    • 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.

      Returns:
      if open
    • getURL

      URL getURL() throws IOException
      Returns:
      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
      Returns:
      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
      Returns:
      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
      Returns:
      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
      Returns:
      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
      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()
      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.

      Returns:
      the file name.
    • getDescription

      String getDescription()
      Returns:
      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: