public class PathResource extends Resource
| Modifier and Type | Field and Description |
|---|---|
private java.nio.file.Path |
alias |
private boolean |
belongsToDefaultFileSystem |
private static java.nio.file.LinkOption[] |
FOLLOW_LINKS |
private static Logger |
LOG |
private static java.nio.file.LinkOption[] |
NO_FOLLOW_LINKS |
private java.nio.file.Path |
path |
private java.net.URI |
uri |
__defaultUseCaches, _associate| Modifier | Constructor and Description |
|---|---|
|
PathResource(java.io.File file)
Construct a new PathResource from a File object.
|
|
PathResource(java.nio.file.Path path)
Construct a new PathResource from a Path object.
|
private |
PathResource(PathResource parent,
java.lang.String childPath)
Construct a new PathResource from a parent PathResource
and child sub path
|
|
PathResource(java.net.URI uri)
Construct a new PathResource from a URI object.
|
|
PathResource(java.net.URL url)
Create a new PathResource from a provided URL object.
|
| Modifier and Type | Method and Description |
|---|---|
Resource |
addPath(java.lang.String subpath)
Returns the resource contained inside the current resource with the
given name.
|
private void |
assertValidPath(java.nio.file.Path path) |
private java.nio.file.Path |
checkAliasPath() |
void |
close()
Release any temporary resources held by the resource.
|
void |
copyTo(java.io.File destination)
Copy the Resource to the new destination file.
|
boolean |
delete()
Deletes the given resource
|
boolean |
equals(java.lang.Object obj) |
boolean |
exists() |
java.net.URI |
getAlias() |
java.nio.file.Path |
getAliasPath()
The Alias as a Path.
|
java.io.File |
getFile()
File representing the given resource.
|
java.io.InputStream |
getInputStream()
Input stream to the resource
|
java.lang.String |
getName()
The name of the resource.
|
java.nio.file.Path |
getPath() |
java.nio.channels.ReadableByteChannel |
getReadableByteChannel()
Readable ByteChannel for the resource.
|
java.net.URI |
getURI()
URI representing the resource.
|
java.net.URL |
getURL()
URL representing the resource.
|
int |
hashCode() |
boolean |
isAlias() |
boolean |
isContainedIn(Resource r) |
boolean |
isDirectory() |
static boolean |
isSameName(java.nio.file.Path pathA,
java.nio.file.Path pathB)
Test if the paths are the same name.
|
long |
lastModified()
Time resource was last modified.
|
long |
length()
Length of the resource.
|
java.lang.String[] |
list()
list of resource names contained in the given resource.
|
java.nio.channels.SeekableByteChannel |
newSeekableByteChannel() |
boolean |
renameTo(Resource dest)
Rename the given resource
|
private void |
skipTo(java.nio.channels.SeekableByteChannel channel,
java.nio.ByteBuffer buffer,
long skipTo) |
java.lang.String |
toString() |
void |
writeTo(java.io.OutputStream outputStream,
long start,
long count) |
encode, finalize, getAllResources, getAssociate, getDefaultUseCaches, getListHTML, getListHTML, getResource, getWeakETag, getWeakETag, isContainedIn, newClassPathResource, newClassPathResource, newResource, newResource, newResource, newResource, newResource, newResource, newResource, newSystemResource, release, setAssociate, setDefaultUseCaches, toURLprivate static final Logger LOG
private static final java.nio.file.LinkOption[] NO_FOLLOW_LINKS
private static final java.nio.file.LinkOption[] FOLLOW_LINKS
private final java.nio.file.Path path
private final java.nio.file.Path alias
private final java.net.URI uri
private final boolean belongsToDefaultFileSystem
public PathResource(java.io.File file)
An invocation of this convenience constructor of the form.
new PathResource(file);
behaves in exactly the same way as the expression
new PathResource(file.toPath());
file - the file to usepublic PathResource(java.nio.file.Path path)
path - the path to useprivate PathResource(PathResource parent, java.lang.String childPath)
parent - the parent path resourcechildPath - the child sub pathpublic PathResource(java.net.URI uri)
throws java.io.IOException
Must be an absolute URI using the file scheme.
uri - the URI to build this PathResource from.java.io.IOException - if unable to construct the PathResource from the URI.public PathResource(java.net.URL url)
throws java.io.IOException,
java.net.URISyntaxException
An invocation of this convenience constructor of the form.
new PathResource(url);
behaves in exactly the same way as the expression
new PathResource(url.toURI());
url - the url to attempt to create PathResource fromjava.io.IOException - if URL doesn't point to a location that can be transformed to a PathResourcejava.net.URISyntaxException - if the provided URL was malformedprivate final java.nio.file.Path checkAliasPath()
public static boolean isSameName(java.nio.file.Path pathA,
java.nio.file.Path pathB)
If the real path is not the same as the absolute path then we know that the real path is the alias for the provided path.
For OS's that are case insensitive, this should return the real (on-disk / case correct) version of the path.
We have to be careful on Windows and OSX.
Assume we have the following scenario:
Path a = new File("foo").toPath();
Files.createFile(a);
Path b = new File("FOO").toPath();
There now exists a file called foo on disk.
Using Windows or OSX, with a Path reference of
FOO, Foo, fOO, etc.. means the following
| OSX | Windows | Linux
-----------------------+---------+------------+---------
Files.exists(a) | True | True | True
Files.exists(b) | True | True | False
Files.isSameFile(a,b) | True | True | False
a.equals(b) | False | True | False
See the javadoc for Path.equals() for details about this FileSystem behavior difference
We also cannot rely on a.compareTo(b) as this is roughly equivalent in implementation to a.equals(b)
public Resource addPath(java.lang.String subpath) throws java.io.IOException
ResourceaddPath in class Resourcesubpath - The path segment to add, which is not encodedjava.io.IOException - if unable to resolve the pathjava.net.MalformedURLException - if the resolution of the path fails because the input path parameter is malformed.private void assertValidPath(java.nio.file.Path path)
public void close()
Resourcepublic boolean delete()
throws java.lang.SecurityException
Resourcepublic boolean equals(java.lang.Object obj)
equals in class java.lang.Objectpublic boolean exists()
public java.io.File getFile()
throws java.io.IOException
Resourcepublic java.nio.file.Path getPath()
Path of the resourcepublic java.io.InputStream getInputStream()
throws java.io.IOException
ResourcegetInputStream in class Resourcejava.io.IOException - if unable to open the input streampublic java.lang.String getName()
Resourcepublic java.nio.channels.ReadableByteChannel getReadableByteChannel()
throws java.io.IOException
ResourcegetReadableByteChannel in class Resourcejava.io.IOException - if unable to open the readable bytechannel for the resource.public java.nio.channels.SeekableByteChannel newSeekableByteChannel()
throws java.io.IOException
java.io.IOExceptionpublic java.net.URI getURI()
Resourcepublic java.net.URL getURL()
Resourcepublic int hashCode()
hashCode in class java.lang.Objectpublic boolean isContainedIn(Resource r) throws java.net.MalformedURLException
isContainedIn in class Resourcejava.net.MalformedURLExceptionpublic boolean isDirectory()
isDirectory in class Resourcepublic long lastModified()
ResourcelastModified in class Resourcepublic long length()
Resourcepublic boolean isAlias()
public java.nio.file.Path getAliasPath()
Note: this cannot return the alias as a DIFFERENT path in 100% of situations, due to Java's internal Path/File normalization.
public java.net.URI getAlias()
public java.lang.String[] list()
Resourcepublic boolean renameTo(Resource dest) throws java.lang.SecurityException
Resourcepublic void copyTo(java.io.File destination)
throws java.io.IOException
ResourceWill not replace existing destination file.
public void writeTo(java.io.OutputStream outputStream,
long start,
long count)
throws java.io.IOException
private void skipTo(java.nio.channels.SeekableByteChannel channel,
java.nio.ByteBuffer buffer,
long skipTo)
throws java.io.IOException
java.io.IOExceptionpublic java.lang.String toString()
toString in class java.lang.Object