org.springframework.core.io

## Class AbstractFileResolvingResource

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

- All Implemented Interfaces:
    InputStreamSource, Resource
  Direct Known Subclasses:
    ClassPathResource, PortletContextResource, ServletContextResource, UrlResource

      public abstract class AbstractFileResolvingResource
      extends AbstractResource

  Abstract base class for resources which resolve URLs into File references, such as `UrlResource` or `ClassPathResource`.

  Detects the "file" protocol as well as the JBoss "vfs" protocol in URLs, resolving file system references accordingly.

  Since:
    3.0
  Author:
    Juergen Hoeller

- - ### Constructor Summary

    Constructors
    Constructor and Description
    `AbstractFileResolvingResource()`

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `long` | `contentLength()` This implementation reads the entire InputStream to calculate the content length.
    `protected void` | `customizeConnection(HttpURLConnection con)` Customize the given `HttpURLConnection`, obtained in the course of an `exists()`, `contentLength()` or `lastModified()` call.
    `protected void` | `customizeConnection(URLConnection con)` Customize the given `URLConnection`, obtained in the course of an `exists()`, `contentLength()` or `lastModified()` call.
    `boolean` | `exists()` This implementation checks whether a File can be opened, falling back to whether an InputStream can be opened.
    `File` | `getFile()` This implementation returns a File reference for the underlying class path resource, provided that it refers to a file in the file system.
    `protected File` | `getFile(URI uri)` This implementation returns a File reference for the underlying class path resource, provided that it refers to a file in the file system.
    `protected File` | `getFileForLastModifiedCheck()` This implementation determines the underlying File (or jar file, in case of a resource in a jar/zip).
    `boolean` | `isReadable()` This implementation always returns `true`.
    `long` | `lastModified()` This implementation checks the timestamp of the underlying File, if available.

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

      `createRelative, equals, getFilename, getURI, getURL, hashCode, isOpen, toString`

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

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

    - ### Methods inherited from interface org.springframework.core.io.Resource

      `getDescription`

    - ### Methods inherited from interface org.springframework.core.io.InputStreamSource

      `getInputStream`

- - ### Constructor Detail

    - #### AbstractFileResolvingResource

          public AbstractFileResolvingResource()

  - ### Method Detail

    - #### getFile

          public File getFile()
                       throws IOException

      This implementation returns a File reference for the underlying class path resource, provided that it refers to a file in the file system.
      Specified by:
        `getFile` in interface `Resource`
      Overrides:
        `getFile` in class `AbstractResource`
      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)`

    - #### getFileForLastModifiedCheck

          protected File getFileForLastModifiedCheck()
                                              throws IOException

      This implementation determines the underlying File (or jar file, in case of a resource in a jar/zip).
      Overrides:
        `getFileForLastModifiedCheck` in class `AbstractResource`
      Returns:
        the File to use for timestamp checking (never `null`)
      Throws:
        `IOException` - if the resource cannot be resolved as absolute file path, i.e. if the resource is not available in a file system

    - #### getFile

          protected File getFile(URI uri)
                          throws IOException

      This implementation returns a File reference for the underlying class path resource, provided that it refers to a file in the file system.
      Throws:
        `IOException`
      See Also:
        `ResourceUtils.getFile(java.net.URI, String)`

    - #### exists

          public boolean exists()

      Description copied from class: `AbstractResource`
      This implementation checks whether a File can be opened, falling back to whether an InputStream can be opened. This will cover both directories and content resources.
      Specified by:
        `exists` in interface `Resource`
      Overrides:
        `exists` in class `AbstractResource`

    - #### isReadable

          public boolean isReadable()

      Description copied from class: `AbstractResource`
      This implementation always returns `true`.
      Specified by:
        `isReadable` in interface `Resource`
      Overrides:
        `isReadable` in class `AbstractResource`
      See Also:
        `InputStreamSource.getInputStream()`

    - #### contentLength

          public long contentLength()
                             throws IOException

      Description copied from class: `AbstractResource`
      This implementation reads the entire InputStream to calculate the content length. Subclasses will almost always be able to provide a more optimal version of this, e.g. checking a File length.
      Specified by:
        `contentLength` in interface `Resource`
      Overrides:
        `contentLength` in class `AbstractResource`
      Throws:
        `IOException` - if the resource cannot be resolved (in the file system or as some other known physical resource type)
      See Also:
        `InputStreamSource.getInputStream()`

    - #### lastModified

          public long lastModified()
                            throws IOException

      Description copied from class: `AbstractResource`
      This implementation checks the timestamp of the underlying File, if available.
      Specified by:
        `lastModified` in interface `Resource`
      Overrides:
        `lastModified` in class `AbstractResource`
      Throws:
        `IOException` - if the resource cannot be resolved (in the file system or as some other known physical resource type)
      See Also:
        `AbstractResource.getFileForLastModifiedCheck()`

    - #### customizeConnection

          protected void customizeConnection(URLConnection con)
                                      throws IOException

      Customize the given `URLConnection`, obtained in the course of an `exists()`, `contentLength()` or `lastModified()` call.

      Calls `ResourceUtils.useCachesIfNecessary(URLConnection)` and delegates to `customizeConnection(HttpURLConnection)` if possible. Can be overridden in subclasses.

      Parameters:
        `con` - the URLConnection to customize
      Throws:
        `IOException` - if thrown from URLConnection methods

    - #### customizeConnection

          protected void customizeConnection(HttpURLConnection con)
                                      throws IOException

      Customize the given `HttpURLConnection`, obtained in the course of an `exists()`, `contentLength()` or `lastModified()` call.

      Sets request method "HEAD" by default. Can be overridden in subclasses.

      Parameters:
        `con` - the HttpURLConnection to customize
      Throws:
        `IOException` - if thrown from HttpURLConnection methods