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()
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 descriptorURI getURI() throws IOException
IOException
- if the resource cannot be resolved as URI,
i.e. if the resource is not available as 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()