public interface Resource extends InputStreamSource
An InputStream can be opened for every resource if it exists in physical form, but a URL or File handle can just be returned for certain resources. The actual behavior is implementation-specific.
InputStreamSource.getInputStream()
,
getURL()
,
getURI()
,
getFile()
,
WritableResource
,
ContextResource
,
UrlResource
,
FileUrlResource
,
FileSystemResource
,
ClassPathResource
,
ByteArrayResource
,
InputStreamResource
Modifier and Type | Method and Description |
---|---|
long |
contentLength()
Determine the content length for this resource.
|
Resource |
createRelative(String relativePath)
Create a resource relative to this resource.
|
boolean |
exists()
Determine whether this resource actually exists in physical form.
|
String |
getDescription()
Return a description for this resource,
to be used for error output when working with the resource.
|
File |
getFile()
Return a File handle for this resource.
|
String |
getFilename()
Determine a filename for this resource, i.e.
|
URI |
getURI()
Return a URI handle for this resource.
|
URL |
getURL()
Return a URL handle for this resource.
|
default boolean |
isFile()
Determine whether this resource represents a file in a file system.
|
default boolean |
isOpen()
Indicate whether this resource represents a handle with an open stream.
|
default boolean |
isReadable()
Indicate whether non-empty contents of this resource can be read via
InputStreamSource.getInputStream() . |
long |
lastModified()
Determine the last-modified timestamp for this resource.
|
default ReadableByteChannel |
readableChannel()
Return a
ReadableByteChannel . |
getInputStream
boolean exists()
This method performs a definitive existence check, whereas the
existence of a Resource
handle only guarantees a valid
descriptor handle.
default boolean isReadable()
InputStreamSource.getInputStream()
.
Will be true
for typical resource descriptors that exist
since it strictly implies exists()
semantics as of 5.1.
Note that actual content reading may still fail when attempted.
However, a value of false
is a definitive indication
that the resource content cannot be read.
InputStreamSource.getInputStream()
,
exists()
default boolean isOpen()
true
, the InputStream cannot be read multiple times,
and must be read and closed to avoid resource leaks.
Will be false
for typical resource descriptors.
default boolean isFile()
A value of true
strongly suggests (but does not guarantee)
that a getFile()
call will succeed.
This is conservatively false
by default.
getFile()
URL getURL() throws IOException
IOException
- if the resource cannot be resolved as URL,
i.e. if the resource is not available as a descriptorURI getURI() throws IOException
IOException
- if the resource cannot be resolved as URI,
i.e. if the resource is not available as a descriptorFile getFile() throws IOException
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 failuresInputStreamSource.getInputStream()
default ReadableByteChannel readableChannel() throws IOException
ReadableByteChannel
.
It is expected that each call creates a fresh channel.
The default implementation returns Channels.newChannel(InputStream)
with the result of InputStreamSource.getInputStream()
.
null
)FileNotFoundException
- if the underlying resource doesn't existIOException
- if the content channel could not be openedInputStreamSource.getInputStream()
long contentLength() throws IOException
IOException
- if the resource cannot be resolved
(in the file system or as some other known physical resource type)long lastModified() throws IOException
IOException
- if the resource cannot be resolved
(in the file system or as some other known physical resource type)Resource createRelative(String relativePath) throws IOException
relativePath
- the relative path (relative to this resource)IOException
- if the relative resource cannot be determined@Nullable String getFilename()
Returns null
if this type of resource does not
have a filename.
String getDescription()
Implementations are also encouraged to return this value
from their toString
method.
Object.toString()