Class PathResource
- All Implemented Interfaces:
InputStreamSource
,Resource
,WritableResource
Resource
implementation for Path
handles,
performing all operations and transformations via the Path
API.
Supports resolution as a File
and also as a URL
.
Implements the extended WritableResource
interface.
Note: As of 5.1, Path
support is also available
in FileSystemResource
,
applying Spring's standard String-based path transformations but
performing all operations via the Files
API.
This PathResource
is effectively a pure java.nio.path.Path
based alternative with different createRelative
behavior.
- Since:
- 4.0
- Author:
- Philippe Marschall, Juergen Hoeller
- See Also:
-
Constructor Summary
ConstructorDescriptionPathResource
(String path) Create a newPathResource
from a path string.PathResource
(URI uri) Create a newPathResource
from aURI
.PathResource
(Path path) Create a newPathResource
from aPath
handle. -
Method Summary
Modifier and TypeMethodDescriptionlong
This implementation returns the underlying file's length.createRelative
(String relativePath) This implementation creates aPathResource
, applying the given path relative to the path of the underlying file of this resource descriptor.boolean
This implementation compares the underlyingPath
references.boolean
exists()
This implementation returns whether the underlying file exists.byte[]
Return the contents of this resource as a byte array.getContentAsString
(Charset charset) Returns the contents of this resource as a string, using the specified charset.Return a description for this resource, to be used for error output when working with the resource.getFile()
This implementation returns the underlyingFile
reference.This implementation returns the name of the file.This implementation opens anInputStream
for the underlying file.This implementation opens anOutputStream
for the underlying file.final String
getPath()
Return the file path for this resource.getURI()
This implementation returns aURI
for the underlying file.getURL()
This implementation returns aURL
for the underlying file.int
hashCode()
This implementation returns the hash code of the underlyingPath
reference.boolean
isFile()
This implementation always indicates a file.boolean
This implementation checks whether the underlying file is marked as readable (and corresponds to an actual file with content, not to a directory).boolean
This implementation checks whether the underlying file is marked as writable (and corresponds to an actual file with content, not to a directory).long
This implementation returns the underlying file's timestamp.This implementation opens aReadableByteChannel
for the underlying file.This implementation opens aWritableByteChannel
for the underlying file.Methods inherited from class org.springframework.core.io.AbstractResource
getFileForLastModifiedCheck, isOpen, toString
-
Constructor Details
-
PathResource
Create a newPathResource
from aPath
handle.Note: Unlike
FileSystemResource
, when building relative resources viacreateRelative(java.lang.String)
, the relative path will be built underneath the given root: e.g. Paths.get("C:/dir1/"), relative path "dir2" → "C:/dir1/dir2"!- Parameters:
path
- a Path handle
-
PathResource
Create a newPathResource
from a path string.Note: Unlike
FileSystemResource
, when building relative resources viacreateRelative(java.lang.String)
, the relative path will be built underneath the given root: e.g. Paths.get("C:/dir1/"), relative path "dir2" → "C:/dir1/dir2"!- Parameters:
path
- a path- See Also:
-
PathResource
Create a newPathResource
from aURI
.Note: Unlike
FileSystemResource
, when building relative resources viacreateRelative(java.lang.String)
, the relative path will be built underneath the given root: e.g. Paths.get("C:/dir1/"), relative path "dir2" → "C:/dir1/dir2"!- Parameters:
uri
- a path URI- See Also:
-
-
Method Details
-
getPath
Return the file path for this resource. -
exists
public boolean exists()This implementation returns whether the underlying file exists.- Specified by:
exists
in interfaceResource
- Overrides:
exists
in classAbstractResource
- See Also:
-
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 interfaceResource
- Overrides:
isReadable
in classAbstractResource
- See Also:
-
getInputStream
This implementation opens anInputStream
for the underlying file.- Specified by:
getInputStream
in interfaceInputStreamSource
- Returns:
- the input stream for the underlying resource (must not be
null
) - Throws:
FileNotFoundException
- if the underlying resource does not existIOException
- if the content stream could not be opened- See Also:
-
getContentAsByteArray
Description copied from interface:Resource
Return the contents of this resource as a byte array.- Specified by:
getContentAsByteArray
in interfaceResource
- Returns:
- the contents of this resource as byte array
- Throws:
FileNotFoundException
- if the resource cannot be resolved as absolute file path, i.e. if the resource is not available in a file systemIOException
- in case of general resolution/reading failures
-
getContentAsString
Description copied from interface:Resource
Returns the contents of this resource as a string, using the specified charset.- Specified by:
getContentAsString
in interfaceResource
- Parameters:
charset
- the charset to use for decoding- Returns:
- the contents of this resource as a
String
- Throws:
FileNotFoundException
- if the resource cannot be resolved as absolute file path, i.e. if the resource is not available in a file systemIOException
- in case of general resolution/reading failures
-
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 interfaceWritableResource
- See Also:
-
getOutputStream
This implementation opens anOutputStream
for the underlying file.- Specified by:
getOutputStream
in interfaceWritableResource
- Throws:
IOException
- if the stream could not be opened- See Also:
-
getURL
This implementation returns aURL
for the underlying file.- Specified by:
getURL
in interfaceResource
- Overrides:
getURL
in classAbstractResource
- Throws:
IOException
- if the resource cannot be resolved as URL, i.e. if the resource is not available as a descriptor- See Also:
-
getURI
This implementation returns aURI
for the underlying file.- Specified by:
getURI
in interfaceResource
- Overrides:
getURI
in classAbstractResource
- Throws:
IOException
- if the resource cannot be resolved as URI, i.e. if the resource is not available as a descriptor- See Also:
-
isFile
public boolean isFile()This implementation always indicates a file.- Specified by:
isFile
in interfaceResource
- Overrides:
isFile
in classAbstractResource
- See Also:
-
getFile
This implementation returns the underlyingFile
reference.- Specified by:
getFile
in interfaceResource
- Overrides:
getFile
in classAbstractResource
- Throws:
FileNotFoundException
- if the resource cannot be resolved as absolute file path, i.e. if the resource is not available in a file systemIOException
- in case of general resolution/reading failures- See Also:
-
readableChannel
This implementation opens aReadableByteChannel
for the underlying file.- Specified by:
readableChannel
in interfaceResource
- Overrides:
readableChannel
in classAbstractResource
- Returns:
- the byte channel for the underlying resource (must not be
null
) - Throws:
FileNotFoundException
- if the underlying resource doesn't existIOException
- if the content channel could not be opened- See Also:
-
writableChannel
This implementation opens aWritableByteChannel
for the underlying file.- Specified by:
writableChannel
in interfaceWritableResource
- Returns:
- the byte channel for the underlying resource (must not be
null
) - Throws:
FileNotFoundException
- if the underlying resource doesn't existIOException
- if the content channel could not be opened- See Also:
-
contentLength
This implementation returns the underlying file's length.- Specified by:
contentLength
in interfaceResource
- Overrides:
contentLength
in classAbstractResource
- Throws:
IOException
- if the resource cannot be resolved (in the file system or as some other known physical resource type)- See Also:
-
lastModified
This implementation returns the underlying file's timestamp.- Specified by:
lastModified
in interfaceResource
- Overrides:
lastModified
in classAbstractResource
- Throws:
IOException
- if the resource cannot be resolved (in the file system or as some other known physical resource type)- See Also:
-
createRelative
This implementation creates aPathResource
, applying the given path relative to the path of the underlying file of this resource descriptor.- Specified by:
createRelative
in interfaceResource
- Overrides:
createRelative
in classAbstractResource
- Parameters:
relativePath
- the relative path (relative to this resource)- Returns:
- the resource handle for the relative resource
- See Also:
-
getFilename
This implementation returns the name of the file.- Specified by:
getFilename
in interfaceResource
- Overrides:
getFilename
in classAbstractResource
- See Also:
-
getDescription
Description copied from interface:Resource
Return 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.- Specified by:
getDescription
in interfaceResource
- See Also:
-
equals
This implementation compares the underlyingPath
references.- Overrides:
equals
in classAbstractResource
- See Also:
-
hashCode
public int hashCode()This implementation returns the hash code of the underlyingPath
reference.- Overrides:
hashCode
in classAbstractResource
- See Also:
-