org.springframework.core.io

## Class ByteArrayResource

- java.lang.Object
- - org.springframework.core.io.AbstractResource
  - - org.springframework.core.io.ByteArrayResource

- All Implemented Interfaces:
    InputStreamSource, Resource

      public class ByteArrayResource
      extends AbstractResource

  `Resource` implementation for a given byte array. Creates a ByteArrayInputStreams for the given byte array.

  Useful for loading content from any given byte array, without having to resort to a single-use `InputStreamResource`. Particularly useful for creating mail attachments from local content, where JavaMail needs to be able to read the stream multiple times.

  Since:
    1.2.3
  Author:
    Juergen Hoeller
  See Also:
    `ByteArrayInputStream`, `InputStreamResource`, `MimeMessageHelper.addAttachment(String, InputStreamSource)`

- - ### Constructor Summary

    Constructors
    Constructor and Description
    `ByteArrayResource(byte[] byteArray)` Create a new ByteArrayResource.
    `ByteArrayResource(byte[] byteArray, String description)` Create a new ByteArrayResource.

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `long` | `contentLength()` This implementation returns the length of the underlying byte array.
    `boolean` | `equals(Object obj)` This implementation compares the underlying byte array.
    `boolean` | `exists()` This implementation always returns `true`.
    `byte[]` | `getByteArray()` Return the underlying byte array.
    `String` | `getDescription()` This implementation returns the passed-in description, if any.
    `InputStream` | `getInputStream()` This implementation returns a ByteArrayInputStream for the underlying byte array.
    `int` | `hashCode()` This implementation returns the hash code based on the underlying byte array.

    - ### Methods inherited from class org.springframework.core.io.AbstractResource

      `createRelative, getFile, getFileForLastModifiedCheck, getFilename, getURI, getURL, isOpen, isReadable, lastModified, toString`

    - ### Methods inherited from class java.lang.Object

      `clone, finalize, getClass, notify, notifyAll, wait, wait, wait`

- - ### Constructor Detail

    - #### ByteArrayResource

          public ByteArrayResource(byte[] byteArray)

      Create a new ByteArrayResource.
      Parameters:
        `byteArray` - the byte array to wrap

    - #### ByteArrayResource

          public ByteArrayResource(byte[] byteArray,
                                   String description)

      Create a new ByteArrayResource.
      Parameters:
        `byteArray` - the byte array to wrap
        `description` - where the byte array comes from

  - ### Method Detail

    - #### getByteArray

          public final byte[] getByteArray()

      Return the underlying byte array.

    - #### exists

          public boolean exists()

      This implementation always returns `true`.
      Specified by:
        `exists` in interface `Resource`
      Overrides:
        `exists` in class `AbstractResource`

    - #### contentLength

          public long contentLength()

      This implementation returns the length of the underlying byte array.
      Specified by:
        `contentLength` in interface `Resource`
      Overrides:
        `contentLength` in class `AbstractResource`
      See Also:
        `InputStreamSource.getInputStream()`

    - #### getInputStream

          public InputStream getInputStream()
                                     throws IOException

      This implementation returns a ByteArrayInputStream for the underlying byte array.
      Returns:
        the input stream for the underlying resource (must not be `null`)
      Throws:
        `IOException` - if the stream could not be opened
      See Also:
        `ByteArrayInputStream`

    - #### getDescription

          public String getDescription()

      This implementation returns the passed-in description, if any.
      See Also:
        `Object.toString()`

    - #### equals

          public boolean equals(Object obj)

      This implementation compares the underlying byte array.
      Overrides:
        `equals` in class `AbstractResource`
      See Also:
        `Arrays.equals(byte[], byte[])`

    - #### hashCode

          public int hashCode()

      This implementation returns the hash code based on the underlying byte array.
      Overrides:
        `hashCode` in class `AbstractResource`
      See Also:
        `Resource.getDescription()`