Package org.springframework.util

# Class StreamUtils

java.lang.Object
org.springframework.util.StreamUtils

public abstract class StreamUtils extends Object
Simple utility methods for dealing with streams.

The copy methods of this class are similar to those defined in `FileCopyUtils` except that all affected streams are left open when done. All copy methods use a block size of 8192 bytes.

Mainly for use within the framework, but also useful for application code.

Since:
  3.2.2
Author:
  Juergen Hoeller, Phillip Webb, Brian Clozel
See Also:
  - `FileCopyUtils`

## Field Summary

Fields
Modifier and Type
Field
Description
`static final int`
`BUFFER_SIZE`
The default buffer size used when copying bytes.

## Constructor Summary

Constructors
Constructor
Description
`StreamUtils()`

## Method Summary

Modifier and Type
Method
Description
`static void`
`copy(byte[] in, OutputStream out)`
Copy the contents of the given byte array to the given OutputStream.
`static int`
`copy(InputStream in, OutputStream out)`
Copy the contents of the given InputStream to the given OutputStream.
`static void`
`copy(String in, Charset charset, OutputStream out)`
Copy the contents of the given String to the given OutputStream.
`static long`
`copyRange(InputStream in, OutputStream out, long start, long end)`
Copy a range of content of the given InputStream to the given OutputStream.
`static byte[]`
`copyToByteArray(InputStream in)`
Copy the contents of the given InputStream into a new byte array.
`static String`
`copyToString(ByteArrayOutputStream baos, Charset charset)`
Copy the contents of the given `ByteArrayOutputStream` into a `String`.
`static String`
`copyToString(InputStream in, Charset charset)`
Copy the contents of the given InputStream into a String.
`static int`
`drain(InputStream in)`
Drain the remaining content of the given `InputStream`.
`static InputStream`
`emptyInput()`
Deprecated.
as of 6.0 in favor of `InputStream.nullInputStream()`
`static InputStream`
`nonClosing(InputStream in)`
Return a variant of the given `InputStream` where calling `close()` has no effect.
`static OutputStream`
`nonClosing(OutputStream out)`
Return a variant of the given `OutputStream` where calling `close()` has no effect.

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

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

## Field Details

### BUFFER_SIZE

public static final int BUFFER_SIZE
The default buffer size used when copying bytes.

See Also:
  - Constant Field Values

## Constructor Details

### StreamUtils

public StreamUtils()

## Method Details

### copyToByteArray

public static byte[] copyToByteArray(@Nullable InputStream in) throws IOException
Copy the contents of the given InputStream into a new byte array.

Leaves the stream open when done.

Parameters:
  `in` - the stream to copy from (may be `null` or empty)
Returns:
  the new byte array that has been copied to (possibly empty)
Throws:
  `IOException` - in case of I/O errors

### copyToString

public static String copyToString(@Nullable InputStream in, Charset charset) throws IOException
Copy the contents of the given InputStream into a String.

Leaves the stream open when done.

Parameters:
  `in` - the InputStream to copy from (may be `null` or empty)
  `charset` - the `Charset` to use to decode the bytes
Returns:
  the String that has been copied to (possibly empty)
Throws:
  `IOException` - in case of I/O errors

### copyToString

public static String copyToString(ByteArrayOutputStream baos, Charset charset)
Copy the contents of the given `ByteArrayOutputStream` into a `String`.

This is a more effective equivalent of `new String(baos.toByteArray(), charset)`.

Parameters:
  `baos` - the `ByteArrayOutputStream` to be copied into a String
  `charset` - the `Charset` to use to decode the bytes
Returns:
  the String that has been copied to (possibly empty)
Since:
  5.2.6

### copy

public static void copy(byte[] in, OutputStream out) throws IOException
Copy the contents of the given byte array to the given OutputStream.

Leaves the stream open when done.

Parameters:
  `in` - the byte array to copy from
  `out` - the OutputStream to copy to
Throws:
  `IOException` - in case of I/O errors

### copy

public static void copy(String in, Charset charset, OutputStream out) throws IOException
Copy the contents of the given String to the given OutputStream.

Leaves the stream open when done.

Parameters:
  `in` - the String to copy from
  `charset` - the Charset
  `out` - the OutputStream to copy to
Throws:
  `IOException` - in case of I/O errors

### copy

public static int copy(InputStream in, OutputStream out) throws IOException
Copy the contents of the given InputStream to the given OutputStream.

Leaves both streams open when done.

Parameters:
  `in` - the InputStream to copy from
  `out` - the OutputStream to copy to
Returns:
  the number of bytes copied
Throws:
  `IOException` - in case of I/O errors

### copyRange

public static long copyRange(InputStream in, OutputStream out, long start, long end) throws IOException
Copy a range of content of the given InputStream to the given OutputStream.

If the specified range exceeds the length of the InputStream, this copies up to the end of the stream and returns the actual number of copied bytes.

Leaves both streams open when done.

Parameters:
  `in` - the InputStream to copy from
  `out` - the OutputStream to copy to
  `start` - the position to start copying from
  `end` - the position to end copying
Returns:
  the number of bytes copied
Throws:
  `IOException` - in case of I/O errors
Since:
  4.3

### drain

public static int drain(@Nullable InputStream in) throws IOException
Drain the remaining content of the given `InputStream`.

Leaves the `InputStream` open when done.

Parameters:
  `in` - the `InputStream` to drain
Returns:
  the number of bytes read, or `0` if the supplied `InputStream` is `null` or empty
Throws:
  `IOException` - in case of I/O errors
Since:
  4.3

### emptyInput

@Deprecated(since="6.0") public static InputStream emptyInput()
Deprecated.
as of 6.0 in favor of `InputStream.nullInputStream()`
Return an efficient empty `InputStream`.

Returns:
  an InputStream which contains no bytes
Since:
  4.2.2

### nonClosing

public static InputStream nonClosing(InputStream in)
Return a variant of the given `InputStream` where calling `close()` has no effect.

Parameters:
  `in` - the InputStream to decorate
Returns:
  a version of the InputStream that ignores calls to close

### nonClosing

public static OutputStream nonClosing(OutputStream out)
Return a variant of the given `OutputStream` where calling `close()` has no effect.

Parameters:
  `out` - the OutputStream to decorate
Returns:
  a version of the OutputStream that ignores calls to close