Class FileUrlResource
- All Implemented Interfaces:
InputStreamSource
,Resource
,WritableResource
UrlResource
which assumes file resolution, to the degree
of implementing the WritableResource
interface for it. This resource
variant also caches resolved File
handles from getFile()
.
This is the class resolved by DefaultResourceLoader
for a "file:..."
URL location, allowing a downcast to WritableResource
for it.
Alternatively, for direct construction from a File
handle
or NIO Path
, consider using FileSystemResource
.
- Since:
- 5.0.2
- Author:
- Juergen Hoeller
-
Constructor Summary
ConstructorDescriptionFileUrlResource
(String location) Create a newFileUrlResource
based on the given file location, using the URL protocol "file".FileUrlResource
(URL url) Create a newFileUrlResource
based on the given URL object. -
Method Summary
Modifier and TypeMethodDescriptioncreateRelative
(String relativePath) This implementation creates aUrlResource
, delegating toUrlResource.createRelativeURL(String)
for adapting the relative path.getFile()
This implementation returns a File reference for the underlying URL/URI, provided that it refers to a file in the file system.Return anOutputStream
for the underlying resource, allowing to (over-)write its content.boolean
Indicate whether the contents of this resource can be written viaWritableResource.getOutputStream()
.Return aWritableByteChannel
.Methods inherited from class org.springframework.core.io.UrlResource
createRelativeURL, equals, from, from, getDescription, getFilename, getInputStream, getURI, getURL, hashCode, isFile
Methods inherited from class org.springframework.core.io.AbstractFileResolvingResource
contentLength, customizeConnection, customizeConnection, exists, getFile, getFileForLastModifiedCheck, isFile, isReadable, lastModified, readableChannel
Methods inherited from class org.springframework.core.io.AbstractResource
isOpen, toString
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
Methods inherited from interface org.springframework.core.io.InputStreamSource
getInputStream
Methods inherited from interface org.springframework.core.io.Resource
contentLength, exists, getContentAsByteArray, getContentAsString, getDescription, getFilename, getURI, getURL, isFile, isOpen, isReadable, lastModified, readableChannel
-
Constructor Details
-
FileUrlResource
Create a newFileUrlResource
based on the given URL object.Note that this does not enforce "file" as URL protocol. If a protocol is known to be resolvable to a file, it is acceptable for this purpose.
- Parameters:
url
- a URL- See Also:
-
FileUrlResource
Create a newFileUrlResource
based on the given file location, using the URL protocol "file".The given parts will automatically get encoded if necessary.
- Parameters:
location
- the location (i.e. the file path within that protocol)- Throws:
MalformedURLException
- if the given URL specification is not valid- See Also:
-
-
Method Details
-
getFile
Description copied from class:UrlResource
This implementation returns a File reference for the underlying URL/URI, provided that it refers to a file in the file system.- Specified by:
getFile
in interfaceResource
- Overrides:
getFile
in classUrlResource
- 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:
-
isWritable
public boolean isWritable()Description copied from interface:WritableResource
Indicate whether the contents of this resource can be written viaWritableResource.getOutputStream()
.Will be
true
for typical resource descriptors; note that actual content writing may still fail when attempted. However, a value offalse
is a definitive indication that the resource content cannot be modified.- Specified by:
isWritable
in interfaceWritableResource
- See Also:
-
getOutputStream
Description copied from interface:WritableResource
Return anOutputStream
for the underlying resource, allowing to (over-)write its content.- Specified by:
getOutputStream
in interfaceWritableResource
- Throws:
IOException
- if the stream could not be opened- See Also:
-
writableChannel
Description copied from interface:WritableResource
Return aWritableByteChannel
.It is expected that each call creates a fresh channel.
The default implementation returns
Channels.newChannel(OutputStream)
with the result ofWritableResource.getOutputStream()
.- 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:
-
createRelative
Description copied from class:UrlResource
This implementation creates aUrlResource
, delegating toUrlResource.createRelativeURL(String)
for adapting the relative path.- Specified by:
createRelative
in interfaceResource
- Overrides:
createRelative
in classUrlResource
- Parameters:
relativePath
- the relative path (relative to this resource)- Returns:
- the resource handle for the relative resource
- Throws:
MalformedURLException
- See Also:
-