org.springframework.core.io
Class FileSystemResource

java.lang.Object
  extended by org.springframework.core.io.AbstractResource
      extended by 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
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()