Class Resource

java.lang.Object
org.eclipse.jetty.util.resource.Resource
All Implemented Interfaces:
Iterable<Resource>
Direct Known Subclasses:
CombinedResource, MemoryResource, PathResource

public abstract class Resource extends Object implements Iterable<Resource>

A Resource is a wrapper over a Path object pointing to a file or directory that can be represented by aFileSystem.

Supports real filesystems, and also ZipFS.

  • Constructor Details

    • Resource

      public Resource()
  • Method Details

    • dump

      public static String dump(Resource resource)
    • getPath

      public abstract Path getPath()
      Return the Path corresponding to this resource.
      Returns:
      the path or null if there is no Path representation.
    • isContainedIn

      public boolean isContainedIn(Resource container)
      Return true if this resource is contained in the Resource r, either because r is a folder or a jar file or any form of resource capable of containing other resources.
      Parameters:
      container - the containing resource
      Returns:
      true if this Resource is contained, false otherwise
      See Also:
    • contains

      public boolean contains(Resource other)
      Return true if this resource deeply contains the other Resource. This resource must be a directory or a jar file or any form of resource capable of containing other resources.
      Parameters:
      other - the resource
      Returns:
      true if this Resource is deeply contains the other Resource, false otherwise
      See Also:
    • getPathTo

      public Path getPathTo(Resource other)
      Get the relative path from this Resource to a possibly contained resource.
      Parameters:
      other - The other resource that may be contained in this resource
      Returns:
      a relative Path representing the path from this resource to the other resource, or null if not able to represent other resources as relative to this resource
    • iterator

      public Iterator<Resource> iterator()

      Return an Iterator of all Resource's referenced in this Resource.

      This is meaningful if you have a CombinedResource, otherwise it will be a single entry Iterator of this resource.

      Specified by:
      iterator in interface Iterable<Resource>
      Returns:
      the iterator of Resources.
    • exists

      public boolean exists()
      Equivalent to Files.exists(Path, LinkOption...) with the following parameters: getPath() and LinkOption.NOFOLLOW_LINKS.
      Returns:
      true if the represented resource exists.
    • isDirectory

      public abstract boolean isDirectory()
      Return true if resource represents a directory of potential resources.
      Returns:
      true if the represented resource is a container/directory.
    • isReadable

      public abstract boolean isReadable()
      True if the resource is readable.
      Returns:
      true if the represented resource exists, and can read from.
    • lastModified

      public Instant lastModified()
      The time the resource was last modified.
      Returns:
      the last modified time instant, or Instant.EPOCH if unable to obtain last modified.
    • length

      public long length()
      Length of the resource.
      Returns:
      the length of the resource in bytes, or -1L if unable to provide a size (such as a directory resource).
    • getURI

      public abstract URI getURI()
      URI representing the resource.
      Returns:
      a URI representing the given resource, or null if there is no URI representation of the resource.
    • getName

      public abstract String getName()
      The full name of the resource.
      Returns:
      the full name of the resource, or null if there is no name for the resource.
    • getFileName

      public abstract String getFileName()

      The file name of the resource.

      This is the last segment of the path.

      Returns:
      the filename of the resource, or "" if there are no path segments (eg: path of "/"), or null if resource cannot determine a filename.
      See Also:
    • newInputStream

      public InputStream newInputStream() throws IOException
      Creates a new input stream to the resource.
      Returns:
      an input stream to the resource or null if one is not available.
      Throws:
      IOException - if there is a problem opening the input stream
    • newReadableByteChannel

      @Deprecated(since="12.0.8", forRemoval=true) public ReadableByteChannel newReadableByteChannel() throws IOException
      Deprecated, for removal: This API element is subject to removal in a future version.
      use newInputStream() or IOResources instead.
      Readable ByteChannel for the resource.
      Returns:
      a readable ByteChannel to the resource or null if one is not available.
      Throws:
      IOException - if unable to open the readable bytechannel for the resource.
    • list

      public List<Resource> list()

      List of contents of a directory Resource.

      Ordering is FileSystem dependent, so callers may wish to sort the return value to ensure deterministic behavior.

      Returns:
      a mutable list of resources contained in the directory resource, or an empty immutable list if unable to build the list (e.g. the resource is not a directory or not readable).
      See Also:
    • resolve

      public abstract Resource resolve(String subUriPath)
      Resolve an existing Resource.
      Parameters:
      subUriPath - the encoded subUriPath
      Returns:
      a Resource representing the requested subUriPath, which may not exist, or null if the resource cannot exist.
      Throws:
      IllegalArgumentException - if subUriPath is invalid
    • isAlias

      public boolean isAlias()
      Returns:
      true if this Resource is an alias to another real Resource
    • getRealURI

      public URI getRealURI()

      The real URI of the resource.

      If this Resource is an alias, (isAlias()), this URI will be different from getURI(), and will point to the real name/location of the Resource.

      Returns:
      The real URI location of this resource.
    • copyTo

      public void copyTo(Path destination) throws IOException
      Copy the Resource to the new destination file or directory.

      If this Resource is a File:

      If this Resource is a Directory:

      If this Resource is not backed by a Path, use newInputStream():

      • And the destination does not exist, copy InputStream to the destination as a new file.
      • And the destination is a File, copy InputStream to the existing destination file.
      • And the destination is a Directory, copy InputStream to a new destination file in the destination directory based on this the result of getFileName() as the filename.
      Parameters:
      destination - the destination file or directory to use (created if it does not exist).
      Throws:
      IOException - if unable to copy the resource
    • getAllResources

      public Collection<Resource> getAllResources()
      Get a deep collection of contained resources.
      Returns:
      A collection of all Resources deeply contained within this resource if it is a directory, otherwise an empty collection is returned.
    • isSameFile

      public boolean isSameFile(Path path)