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

Methods
`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()`