org.springframework.core.io

## 接口 Resource

- 所有超级接口:
    InputStreamSource
  所有已知子接口:
    ContextResource, WritableResource
  所有已知实现类:
    AbstractFileResolvingResource, AbstractResource, ByteArrayResource, ClassPathResource, DefaultResourceLoader.ClassPathContextResource, DescriptiveResource, FileSystemResource, FileUrlResource, InputStreamResource, PathResource, UrlResource, VfsResource

      public interface Resource
      extends InputStreamSource

  Interface for a resource descriptor that abstracts from the actual type of underlying resource, such as a file or class path resource.

  An InputStream can be opened for every resource if it exists in physical form, but a URL or File handle can just be returned for certain resources. The actual behavior is implementation-specific.

  从以下版本开始:
    28.12.2003
  作者:
    Juergen Hoeller
  另请参阅:
    `InputStreamSource.getInputStream()`, `getURL()`, `getURI()`, `getFile()`, `WritableResource`, `ContextResource`, `UrlResource`, `FileUrlResource`, `FileSystemResource`, `ClassPathResource`, `ByteArrayResource`, `InputStreamResource`

- - ### 方法概要

    所有方法 实例方法 抽象方法 默认方法
    限定符和类型 | 方法和说明
    --- | ---
    `long` | `contentLength()` Determine the content length for this resource.
    `Resource` | `createRelative(String relativePath)` Create a resource relative to this resource.
    `boolean` | `exists()` Determine whether this resource actually exists in physical form.
    `String` | `getDescription()` Return a description for this resource, to be used for error output when working with the resource.
    `File` | `getFile()` Return a File handle for this resource.
    `String` | `getFilename()` Determine a filename for this resource, i.e. typically the last part of the path: for example, "myfile.txt".
    `URI` | `getURI()` Return a URI handle for this resource.
    `URL` | `getURL()` Return a URL handle for this resource.
    `default boolean` | `isFile()` Determine whether this resource represents a file in a file system.
    `default boolean` | `isOpen()` Indicate whether this resource represents a handle with an open stream.
    `default boolean` | `isReadable()` Indicate whether the contents of this resource can be read via `InputStreamSource.getInputStream()`.
    `long` | `lastModified()` Determine the last-modified timestamp for this resource.
    `default ReadableByteChannel` | `readableChannel()` Return a `ReadableByteChannel`.

    - ### 从接口继承的方法 org.springframework.core.io.InputStreamSource

      `getInputStream`

- - ### 方法详细资料

    - #### exists

          boolean exists()

      Determine whether this resource actually exists in physical form.

      This method performs a definitive existence check, whereas the existence of a `Resource` handle only guarantees a valid descriptor handle.

    - #### isReadable

          default boolean isReadable()

      Indicate whether the contents of this resource can be read via `InputStreamSource.getInputStream()`.

      Will be `true` for typical resource descriptors; note that actual content reading may still fail when attempted. However, a value of `false` is a definitive indication that the resource content cannot be read.

      另请参阅:
        `InputStreamSource.getInputStream()`

    - #### isOpen

          default boolean isOpen()

      Indicate whether this resource represents a handle with an open stream. If `true`, the InputStream cannot be read multiple times, and must be read and closed to avoid resource leaks.

      Will be `false` for typical resource descriptors.

    - #### isFile

          default boolean isFile()

      Determine whether this resource represents a file in a file system. A value of `true` strongly suggests (but does not guarantee) that a `getFile()` call will succeed.

      This is conservatively `false` by default.

      从以下版本开始:
        5.0
      另请参阅:
        `getFile()`

    - #### getURL

          URL getURL()
              throws IOException

      Return a URL handle for this resource.
      抛出:
        `IOException` - if the resource cannot be resolved as URL, i.e. if the resource is not available as descriptor

    - #### getURI

          URI getURI()
              throws IOException

      Return a URI handle for this resource.
      抛出:
        `IOException` - if the resource cannot be resolved as URI, i.e. if the resource is not available as descriptor
      从以下版本开始:
        2.5

    - #### getFile

          File getFile()
                throws IOException

      Return a File handle for this resource.
      抛出:
        `FileNotFoundException` - if the resource cannot be resolved as absolute file path, i.e. if the resource is not available in a file system
        `IOException` - in case of general resolution/reading failures
      另请参阅:
        `InputStreamSource.getInputStream()`

    - #### readableChannel

          default ReadableByteChannel readableChannel()
                                               throws IOException

      Return a `ReadableByteChannel`.

      It is expected that each call creates a fresh channel.

      The default implementation returns `Channels.newChannel(InputStream)` with the result of `InputStreamSource.getInputStream()`.

      返回:
        the byte channel for the underlying resource (must not be `null`)
      抛出:
        `FileNotFoundException` - if the underlying resource doesn't exist
        `IOException` - if the content channel could not be opened
      从以下版本开始:
        5.0
      另请参阅:
        `InputStreamSource.getInputStream()`

    - #### contentLength

          long contentLength()
                      throws IOException

      Determine the content length for this resource.
      抛出:
        `IOException` - if the resource cannot be resolved (in the file system or as some other known physical resource type)

    - #### lastModified

          long lastModified()
                     throws IOException

      Determine the last-modified timestamp for this resource.
      抛出:
        `IOException` - if the resource cannot be resolved (in the file system or as some other known physical resource type)

    - #### createRelative

          Resource createRelative(String relativePath)
                           throws IOException

      Create a resource relative to this resource.
      参数:
        `relativePath` - the relative path (relative to this resource)
      返回:
        the resource handle for the relative resource
      抛出:
        `IOException` - if the relative resource cannot be determined

    - #### getFilename

          @Nullable
          String getFilename()

      Determine a filename for this resource, i.e. typically the last part of the path: for example, "myfile.txt".

      Returns `null` if this type of resource does not have a filename.

    - #### getDescription

          String getDescription()

      Return a description for this resource, to be used for error output when working with the resource.

      Implementations are also encouraged to return this value from their `toString` method.

      另请参阅:
        `Object.toString()`