## org.springframework.core.io
Class FileSystemResource

    java.lang.Object
      org.springframework.core.io.AbstractResource
          org.springframework.core.io.FileSystemResource

All Implemented Interfaces:
  InputStreamSource, Resource, WritableResource

    public class FileSystemResource

extends AbstractResource
implements WritableResource

`Resource` implementation for `java.io.File` handles. Obviously supports resolution as File, and also as URL. Implements the extended `WritableResource` interface.

Since:
  28.12.2003
Author:
  Juergen Hoeller
See Also:
  `File`

Constructor Summary
`FileSystemResource(File file)` Create a new FileSystemResource from a File handle.
`FileSystemResource(String path)` Create a new FileSystemResource from a file path.

Method Summary
`long` `contentLength()` This implementation returns the underlying File's length.
`Resource` `createRelative(String relativePath)` This implementation creates a FileSystemResource, applying the given path relative to the path of the underlying file of this resource descriptor.
`boolean` `equals(Object obj)` This implementation compares the underlying File references.
`boolean` `exists()` This implementation returns whether the underlying file exists.
`String` `getDescription()` This implementation returns a description that includes the absolute path of the file.
`File` `getFile()` This implementation returns the underlying File reference.
`String` `getFilename()` This implementation returns the name of the file.
`InputStream` `getInputStream()` This implementation opens a FileInputStream for the underlying file.
`OutputStream` `getOutputStream()` This implementation opens a FileOutputStream for the underlying file.
`String` `getPath()` Return the file path for this resource.
`URI` `getURI()` This implementation returns a URI for the underlying file.
`URL` `getURL()` This implementation returns a URL for the underlying file.
`int` `hashCode()` This implementation returns the hash code of the underlying File reference.
`boolean` `isReadable()` This implementation checks whether the underlying file is marked as readable (and corresponds to an actual file with content, not to a directory).
`boolean` `isWritable()` This implementation checks whether the underlying file is marked as writable (and corresponds to an actual file with content, not to a directory).

Methods inherited from class org.springframework.core.io.AbstractResource
`getFileForLastModifiedCheck, isOpen, lastModified, 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
`isOpen, lastModified`

Constructor Detail

### FileSystemResource

    public FileSystemResource(File file)

  Create a new FileSystemResource from a File handle.

  Note: When building relative resources via `createRelative(java.lang.String)`, the relative path will apply at the same directory level: e.g. new File("C:/dir1"), relative path "dir2" -> "C:/dir2"! If you prefer to have relative paths built underneath the given root directory, use the `constructor with a file path` to append a trailing slash to the root path: "C:/dir1/", which indicates this directory as root for all relative paths.

  Parameters:
    `file` - a File handle

### FileSystemResource

    public FileSystemResource(String path)

  Create a new FileSystemResource from a file path.

  Note: When building relative resources via `createRelative(java.lang.String)`, it makes a difference whether the specified resource base path here ends with a slash or not. In the case of "C:/dir1/", relative paths will be built underneath that root: e.g. relative path "dir2" -> "C:/dir1/dir2". In the case of "C:/dir1", relative paths will apply at the same directory level: relative path "dir2" -> "C:/dir2".

  Parameters:
    `path` - a file path

Method Detail

### getPath

    public final String getPath()

  Return the file path for this resource.

### exists

    public boolean exists()

  This implementation returns whether the underlying file exists.

  Specified by:
    `exists` in interface `Resource`
  Overrides:
    `exists` in class `AbstractResource`
  See Also:
    `File.exists()`

### isReadable

    public boolean isReadable()

  This implementation checks whether the underlying file is marked as readable (and corresponds to an actual file with content, not to a directory).

  Specified by:
    `isReadable` in interface `Resource`
  Overrides:
    `isReadable` in class `AbstractResource`
  See Also:
    `File.canRead()`, `File.isDirectory()`

### getInputStream

    public InputStream getInputStream()
                               throws IOException

  This implementation opens a FileInputStream for the underlying file.

  Specified by:
    `getInputStream` in interface `InputStreamSource`
  Returns:
    the input stream for the underlying resource (must not be `null`)
  Throws:
    `IOException` - if the stream could not be opened
  See Also:
    `FileInputStream`

### getURL

    public URL getURL()
               throws IOException

  This implementation returns a URL for the underlying file.

  Specified by:
    `getURL` in interface `Resource`
  Overrides:
    `getURL` in class `AbstractResource`
  Throws:
    `IOException` - if the resource cannot be resolved as URL, i.e. if the resource is not available as descriptor
  See Also:
    `File.toURI()`

### getURI

    public URI getURI()
               throws IOException

  This implementation returns a URI for the underlying file.

  Specified by:
    `getURI` in interface `Resource`
  Overrides:
    `getURI` in class `AbstractResource`
  Throws:
    `IOException` - if the resource cannot be resolved as URI, i.e. if the resource is not available as descriptor
  See Also:
    `File.toURI()`

### getFile

    public File getFile()

  This implementation returns the underlying File reference.

  Specified by:
    `getFile` in interface `Resource`
  Overrides:
    `getFile` in class `AbstractResource`

### contentLength

    public long contentLength()
                       throws IOException

  This implementation returns the underlying File's 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()`

### createRelative

    public Resource createRelative(String relativePath)

  This implementation creates a FileSystemResource, applying the given path relative to the path of the underlying file of this resource descriptor.

  Specified by:
    `createRelative` in interface `Resource`
  Overrides:
    `createRelative` in class `AbstractResource`
  Parameters:
    `relativePath` - the relative path (relative to this resource)
  Returns:
    the resource handle for the relative resource
  See Also:
    `StringUtils.applyRelativePath(String, String)`

### getFilename

    public String getFilename()

  This implementation returns the name of the file.

  Specified by:
    `getFilename` in interface `Resource`
  Overrides:
    `getFilename` in class `AbstractResource`
  See Also:
    `File.getName()`

### getDescription

    public String getDescription()

  This implementation returns a description that includes the absolute path of the file.

  Specified by:
    `getDescription` in interface `Resource`
  See Also:
    `File.getAbsolutePath()`

### isWritable

    public boolean isWritable()

  This implementation checks whether the underlying file is marked as writable (and corresponds to an actual file with content, not to a directory).

  Specified by:
    `isWritable` in interface `WritableResource`
  See Also:
    `File.canWrite()`, `File.isDirectory()`

### getOutputStream

    public OutputStream getOutputStream()
                                 throws IOException

  This implementation opens a FileOutputStream for the underlying file.

  Specified by:
    `getOutputStream` in interface `WritableResource`
  Throws:
    `IOException` - if the stream could not be opened
  See Also:
    `FileOutputStream`

### equals

    public boolean equals(Object obj)

  This implementation compares the underlying File references.

  Overrides:
    `equals` in class `AbstractResource`
  See Also:
    `Resource.getDescription()`

### hashCode

    public int hashCode()

  This implementation returns the hash code of the underlying File reference.

  Overrides:
    `hashCode` in class `AbstractResource`
  See Also:
    `Resource.getDescription()`