Package org.springframework.util
Class StreamUtils
java.lang.Object
org.springframework.util.StreamUtils
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:
-
Field Summary
Modifier and TypeFieldDescriptionstatic final int
The default buffer size used when copying bytes. -
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionstatic 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[]
Copy the contents of the given InputStream into a new byte array.static String
copyToString
(@Nullable InputStream in, Charset charset) Copy the contents of the given InputStream into a String.static String
copyToString
(ByteArrayOutputStream baos, Charset charset) Copy the contents of the givenByteArrayOutputStream
into aString
.static int
Drain the remaining content of the given InputStream.static InputStream
Deprecated.static InputStream
Return a variant of the givenInputStream
where callingclose()
has no effect.static OutputStream
nonClosing
(OutputStream out) Return a variant of the givenOutputStream
where callingclose()
has no effect.
-
Field Details
-
BUFFER_SIZE
public static final int BUFFER_SIZEThe default buffer size used when copying bytes.- See Also:
-
-
Constructor Details
-
StreamUtils
public StreamUtils()
-
-
Method Details
-
copyToByteArray
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 benull
or empty)- Returns:
- the new byte array that has been copied to (possibly empty)
- Throws:
IOException
- in case of I/O errors
-
copyToString
Copy the contents of the given InputStream into a String.Leaves the stream open when done.
- Parameters:
in
- the InputStream to copy from (may benull
or empty)charset
- theCharset
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
Copy the contents of the givenByteArrayOutputStream
into aString
.This is a more effective equivalent of
new String(baos.toByteArray(), charset)
.- Parameters:
baos
- theByteArrayOutputStream
to be copied into a Stringcharset
- theCharset
to use to decode the bytes- Returns:
- the String that has been copied to (possibly empty)
- Since:
- 5.2.6
-
copy
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 fromout
- the OutputStream to copy to- Throws:
IOException
- in case of I/O errors
-
copy
Copy the contents of the given String to the given OutputStream.Leaves the stream open when done.
- Parameters:
in
- the String to copy fromcharset
- the Charsetout
- the OutputStream to copy to- Throws:
IOException
- in case of I/O errors
-
copy
Copy the contents of the given InputStream to the given OutputStream.Leaves both streams open when done.
- Parameters:
in
- the InputStream to copy fromout
- 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 fromout
- the OutputStream to copy tostart
- the position to start copying fromend
- the position to end copying- Returns:
- the number of bytes copied
- Throws:
IOException
- in case of I/O errors- Since:
- 4.3
-
drain
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
- Throws:
IOException
- in case of I/O errors- Since:
- 4.3
-
emptyInput
Deprecated.as of 6.0 in favor ofInputStream.nullInputStream()
Return an efficient emptyInputStream
.- Returns:
- an InputStream which contains no bytes
- Since:
- 4.2.2
-
nonClosing
Return a variant of the givenInputStream
where callingclose()
has no effect.- Parameters:
in
- the InputStream to decorate- Returns:
- a version of the InputStream that ignores calls to close
-
nonClosing
Return a variant of the givenOutputStream
where callingclose()
has no effect.- Parameters:
out
- the OutputStream to decorate- Returns:
- a version of the OutputStream that ignores calls to close
-
InputStream.nullInputStream()