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 ofUrlResourcewhich assumes file resolution, to the degree of implementing theWritableResourceinterface for it. This resource variant also caches resolvedFilehandles fromgetFile().This is the class resolved by
DefaultResourceLoaderfor a "file:..." URL location, allowing a downcast toWritableResourcefor it.Alternatively, for direct construction from a
Filehandle or NIOPath, consider usingFileSystemResource.- Since:
- 5.0.2
- Author:
- Juergen Hoeller
Constructor Summary
Constructors Constructor Description FileUrlResource(String location)Create a newFileUrlResourcebased on the given file location, using the URL protocol "file".FileUrlResource(URL url)Create a newFileUrlResourcebased on the given URL object.
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description ResourcecreateRelative(String relativePath)This implementation creates aUrlResource, delegating toUrlResource.createRelativeURL(String)for adapting the relative path.FilegetFile()This implementation returns a File reference for the underlying URL/URI, provided that it refers to a file in the file system.OutputStreamgetOutputStream()Return anOutputStreamfor the underlying resource, allowing to (over-)write its content.booleanisWritable()Indicate whether the contents of this resource can be written viaWritableResource.getOutputStream().WritableByteChannelwritableChannel()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 newFileUrlResourcebased 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 newFileUrlResourcebased 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:UrlResourceThis implementation returns a File reference for the underlying URL/URI, provided that it refers to a file in the file system.- Specified by:
getFilein interfaceResource- Overrides:
getFilein 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:WritableResourceIndicate whether the contents of this resource can be written viaWritableResource.getOutputStream().Will be
truefor typical resource descriptors; note that actual content writing may still fail when attempted. However, a value offalseis a definitive indication that the resource content cannot be modified.- Specified by:
isWritablein interfaceWritableResource- See Also:
WritableResource.getOutputStream(),Resource.isReadable()
getOutputStream
public OutputStream getOutputStream() throws IOException
Description copied from interface:WritableResourceReturn anOutputStreamfor the underlying resource, allowing to (over-)write its content.- Specified by:
getOutputStreamin interfaceWritableResource- Throws:
IOException- if the stream could not be opened- See Also:
InputStreamSource.getInputStream()
writableChannel
public WritableByteChannel writableChannel() throws IOException
Description copied from interface:WritableResourceReturn 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:
writableChannelin 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:UrlResourceThis implementation creates aUrlResource, delegating toUrlResource.createRelativeURL(String)for adapting the relative path.- Specified by:
createRelativein interfaceResource- Overrides:
createRelativein 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)