java.lang.Object
nl.basjes.parse.useragent.utils.springframework.core.io.AbstractResource
nl.basjes.parse.useragent.utils.springframework.core.io.FileSystemResource
All Implemented Interfaces:
InputStreamSource, Resource

public class FileSystemResource extends AbstractResource implements Resource
{link Resource} implementation for java.io.File and java.nio.file.Path handles with a file system target. Supports resolution as a File and also as a URL. Implements the extended {link WritableResource} interface.

Note: As of Spring Framework 5.0, this {link Resource} implementation uses NIO.2 API for read/write interactions. As of 5.1, it may be constructed with a {link java.nio.file.Path} handle in which case it will perform all file system interactions via NIO.2, only resorting to {link File} on {link #getFile()}.

Since:
28.12.2003
Author:
Juergen Hoeller see #FileSystemResource(String) see #FileSystemResource(File) see #FileSystemResource(Path) see java.io.File see java.nio.file.Files
  • Constructor Summary

    Constructors
    Constructor
    Description
    Create a new FileSystemResource from a {link File} handle.
    Create a new FileSystemResource from a file path.
    Create a new FileSystemResource from a {link FileSystem} handle, locating the specified path.
  • Method Summary

    Modifier and Type
    Method
    Description
    long
    This implementation returns the underlying File/Path length.
    createRelative(String relativePath)
    This implementation creates a FileSystemResource, applying the given path relative to the path of the underlying file of this resource descriptor.
    boolean
    equals(Object other)
    This implementation compares the underlying File references.
    boolean
    This implementation returns whether the underlying file exists.
    This implementation returns a description that includes the absolute path of the file.
    This implementation returns the underlying File reference.
    This implementation returns the name of the file.
    This implementation opens a NIO file stream for the underlying file.
    final String
    Return the file path for this resource.
    This implementation returns a URI for the underlying file.
    This implementation returns a URL for the underlying file.
    int
    This implementation returns the hash code of the underlying File reference.
    boolean
    This implementation always indicates a file.

    Methods inherited from class nl.basjes.parse.useragent.utils.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 nl.basjes.parse.useragent.utils.springframework.core.io.Resource

    isOpen
  • Constructor Details

    • FileSystemResource

      public FileSystemResource(String path)
      Create a new FileSystemResource from a file path.

      Note: When building relative resources via {link #createRelative}, it makes a difference whether the specified resource base path here ends with a slash or not. In the case of "C:/dir1/", relative paths will be built underneath that root: e.g. relative path "dir2" → "C:/dir1/dir2". In the case of "C:/dir1", relative paths will apply at the same directory level: relative path "dir2" → "C:/dir2".

      Parameters:
      path - a file path see #FileSystemResource(Path)
    • FileSystemResource

      public FileSystemResource(@Nonnull File filE)
      Create a new FileSystemResource from a {link File} handle.

      Note: When building relative resources via {link #createRelative}, the relative path will apply at the same directory level: e.g. new File("C:/dir1"), relative path "dir2" → "C:/dir2"! If you prefer to have relative paths built underneath the given root directory, use the {link #FileSystemResource(String) constructor with a file path} to append a trailing slash to the root path: "C:/dir1/", which indicates this directory as root for all relative paths.

      Parameters:
      filE - a File handle see #FileSystemResource(Path) see #getFile()
    • FileSystemResource

      public FileSystemResource(FileSystem fileSystem, String path)
      Create a new FileSystemResource from a {link FileSystem} handle, locating the specified path.

      This is an alternative to {link #FileSystemResource(String)}, performing all file system interactions via NIO.2 instead of {link File}.

      Parameters:
      fileSystem - the FileSystem to locate the path within
      path - a file path see #FileSystemResource(File)
      Since:
      5.1.1
  • Method Details

    • getPath

      public final String getPath()
      Return the file path for this resource.
    • exists

      public boolean exists()
      This implementation returns whether the underlying file exists. see java.io.File#exists()
      Specified by:
      exists in interface Resource
      Overrides:
      exists in class AbstractResource
    • getInputStream

      public InputStream getInputStream() throws IOException
      This implementation opens a NIO file stream for the underlying file. see java.io.FileInputStream
      Specified by:
      getInputStream in interface InputStreamSource
      Returns:
      the input stream for the underlying resource (must not be null)
      Throws:
      FileNotFoundException - if the underlying resource does not exist
      IOException - if the content stream could not be opened see Resource#isReadable()
    • getURL

      public URL getURL() throws IOException
      This implementation returns a URL for the underlying file. see java.io.File#toURI()
      Specified by:
      getURL in interface Resource
      Overrides:
      getURL in class AbstractResource
      Throws:
      IOException - if the resource cannot be resolved as URL, i.e. if the resource is not available as a descriptor
    • getURI

      public URI getURI() throws IOException
      This implementation returns a URI for the underlying file. see java.io.File#toURI()
      Specified by:
      getURI in interface Resource
      Overrides:
      getURI in class AbstractResource
      Throws:
      IOException - if the resource cannot be resolved as URI, i.e. if the resource is not available as a descriptor
    • isFile

      public boolean isFile()
      This implementation always indicates a file.
      Specified by:
      isFile in interface Resource
      Overrides:
      isFile in class AbstractResource
    • getFile

      public File getFile()
      This implementation returns the underlying File reference.
      Specified by:
      getFile in interface Resource
      Overrides:
      getFile in class AbstractResource
    • contentLength

      public long contentLength() throws IOException
      This implementation returns the underlying File/Path length.
      Specified by:
      contentLength in interface Resource
      Overrides:
      contentLength in class AbstractResource
      Throws:
      IOException - if the resource cannot be resolved (in the file system or as some other known physical resource type)
    • createRelative

      public Resource createRelative(String relativePath)
      This implementation creates a FileSystemResource, applying the given path relative to the path of the underlying file of this resource descriptor. see org.springframework.util.StringUtils#applyRelativePath(String, String)
      Specified by:
      createRelative in interface Resource
      Overrides:
      createRelative in class AbstractResource
      Parameters:
      relativePath - the relative path (relative to this resource)
      Returns:
      the resource handle for the relative resource
    • getFilename

      public String getFilename()
      This implementation returns the name of the file. see java.io.File#getName()
      Specified by:
      getFilename in interface Resource
      Overrides:
      getFilename in class AbstractResource
    • getDescription

      public String getDescription()
      This implementation returns a description that includes the absolute path of the file. see java.io.File#getAbsolutePath()
      Specified by:
      getDescription in interface Resource
    • equals

      public boolean equals(@Nullable Object other)
      This implementation compares the underlying File references.
      Overrides:
      equals in class AbstractResource
    • hashCode

      public int hashCode()
      This implementation returns the hash code of the underlying File reference.
      Overrides:
      hashCode in class AbstractResource