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
`long` `contentLength()` This implementation reads the entire InputStream to calculate the content length.
`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()`