Class FileUrlResource
- java.lang.Object
- org.springframework.core.io.AbstractResource
- org.springframework.core.io.AbstractFileResolvingResource
- org.springframework.core.io.UrlResource
- org.springframework.core.io.FileUrlResource
- All Implemented Interfaces:
InputStreamSource
,Resource
,WritableResource
public class FileUrlResource extends UrlResource implements WritableResource
Subclass ofUrlResource
which assumes file resolution, to the degree of implementing theWritableResource
interface for it. This resource variant also caches resolvedFile
handles fromgetFile()
.This is the class resolved by
DefaultResourceLoader
for a "file:..." URL location, allowing a downcast toWritableResource
for it.Alternatively, for direct construction from a
File
handle or NIOPath
, consider usingFileSystemResource
.- Since:
- 5.0.2
- Author:
- Juergen Hoeller
Constructor Summary
Constructors Constructor Description FileUrlResource(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
All Methods Instance Methods Concrete Methods Modifier and Type Method Description Resource
createRelative(String relativePath)
This implementation creates aUrlResource
, delegating toUrlResource.createRelativeURL(String)
for adapting the relative path.File
getFile()
This implementation returns a File reference for the underlying URL/URI, provided that it refers to a file in the file system.OutputStream
getOutputStream()
Return anOutputStream
for the underlying resource, allowing to (over-)write its content.boolean
isWritable()
Indicate whether the contents of this resource can be written viaWritableResource.getOutputStream()
.WritableByteChannel
writableChannel()
Return aWritableByteChannel
.Methods inherited from class org.springframework.core.io.UrlResource
createRelativeURL, equals, 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, getDescription, getFilename, getURI, getURL, isFile, isOpen, isReadable, lastModified, readableChannel
Constructor Detail
FileUrlResource
public FileUrlResource(URL url)
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:
ResourceUtils.isFileURL(URL)
,getFile()
FileUrlResource
public FileUrlResource(String location) throws MalformedURLException
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:
UrlResource(String, String)
,ResourceUtils.URL_PROTOCOL_FILE
Method Detail
getFile
public File getFile() throws IOException
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:
ResourceUtils.getFile(java.net.URL, String)
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:
WritableResource.getOutputStream()
,Resource.isReadable()
getOutputStream
public OutputStream getOutputStream() throws IOException
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:
InputStreamSource.getInputStream()
writableChannel
public WritableByteChannel writableChannel() throws IOException
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:
WritableResource.getOutputStream()
createRelative
public Resource createRelative(String relativePath) throws MalformedURLException
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:
UrlResource.createRelativeURL(String)