Package com.helger.commons.io.stream
Class NonBlockingByteArrayOutputStream
java.lang.Object
java.io.OutputStream
com.helger.commons.io.stream.NonBlockingByteArrayOutputStream
- All Implemented Interfaces:
IWriteToStream,IHasSize,Closeable,Flushable,AutoCloseable
public class NonBlockingByteArrayOutputStream
extends OutputStream
implements IHasSize, IWriteToStream
A non-synchronized copy of the class
ByteArrayOutputStream.- Author:
- Philip Helger
- See Also:
-
Field Summary
Fields -
Constructor Summary
ConstructorsConstructorDescriptionCreates a new byte array output stream.NonBlockingByteArrayOutputStream(int nSize) Creates a new byte array output stream, with a buffer capacity of the specified size, in bytes. -
Method Summary
Modifier and TypeMethodDescriptionvoidclose()Closing aByteArrayOutputStreamhas no effect.byte[]Create a new InputStream from the contained byte array WITHOUT COPYING it.getAsString(int nOfs, int nLength, Charset aCharset) Converts the buffer's contents into a string by decoding the bytes using the specifiedcharsetName.getAsString(int nLength, Charset aCharset) Converts the buffer's contents into a string by decoding the bytes using the specifiedcharsetName.getAsString(Charset aCharset) Converts the buffer's contents into a string by decoding the bytes using the specifiedcharsetName.byte[]intbytegetByteAt(int nIndex) Get the byte at the specified indexbooleanisEmpty()booleanvoidreadFrom(InputStream aIS) Reads the givenInputStreamcompletely into the buffer.voidreset()Resets thecountfield of this byte array output stream to zero, so that all currently accumulated output in the output stream is discarded.intsize()Returns the current size of the buffer.booleanstartsWith(byte[] aBytes) booleanstartsWith(byte[] aBytes, int nOfs, int nLen) byte[]Creates a newly allocated byte array.toString()voidwrite(byte[] aBuf) voidwrite(byte[] aBuf, int nOfs, int nLen) WritesnLenbytes from the specified byte array starting at offsetnOfsto this byte array output stream.voidwrite(int b) Writes the specified byte to this byte array output stream.voidwriteTo(OutputStream aOS) Writes the complete contents of this byte array output stream to the specified output stream argument, as if by calling the output stream's write method usingout.write(buf, 0, count).Methods inherited from class java.io.OutputStream
flush, nullOutputStreamMethods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, waitMethods inherited from interface com.helger.commons.io.IWriteToStream
writeToAndClose
-
Field Details
-
m_aBuf
protected byte[] m_aBufThe buffer where data is stored. -
m_nCount
protected int m_nCountThe number of valid bytes in the buffer.
-
-
Constructor Details
-
NonBlockingByteArrayOutputStream
public NonBlockingByteArrayOutputStream()Creates a new byte array output stream. The buffer capacity is initially 32 bytes, though its size increases if necessary. -
NonBlockingByteArrayOutputStream
Creates a new byte array output stream, with a buffer capacity of the specified size, in bytes.- Parameters:
nSize- the initial size.- Throws:
IllegalArgumentException- if size is negative.
-
-
Method Details
-
write
public void write(int b) Writes the specified byte to this byte array output stream.- Specified by:
writein classOutputStream- Parameters:
b- the byte to be written.
-
write
- Overrides:
writein classOutputStream
-
write
WritesnLenbytes from the specified byte array starting at offsetnOfsto this byte array output stream.- Overrides:
writein classOutputStream- Parameters:
aBuf- the data.nOfs- the start offset in the data.nLen- the number of bytes to write.
-
writeTo
Writes the complete contents of this byte array output stream to the specified output stream argument, as if by calling the output stream's write method usingout.write(buf, 0, count). The content of this stream is not altered by calling this method.- Specified by:
writeToin interfaceIWriteToStream- Parameters:
aOS- the output stream to which to write the data. May not benull.- Throws:
IOException- if an I/O error occurs.
-
readFrom
Reads the givenInputStreamcompletely into the buffer.- Parameters:
aIS- the InputStream to read from. May not benull. Is not closed internally.- Throws:
IOException- If reading fails
-
reset
public void reset()Resets thecountfield of this byte array output stream to zero, so that all currently accumulated output in the output stream is discarded. The output stream can be used again, reusing the already allocated buffer space. -
toByteArray
Creates a newly allocated byte array. Its size is the current size of this output stream and the valid contents of the buffer have been copied into it.
If you are sure, that this OutputStream is not altered anymore, it maybe preferred to usegetBufferOrCopy()because it avoids copying the internal buffer if the size matches exactly.- Returns:
- the current contents of this output stream, as a byte array.
-
getByteAt
Get the byte at the specified index- Parameters:
nIndex- The index to use. Must be ≥ 0 and < count- Returns:
- The byte at the specified position
-
getBufferSize
- Returns:
- The number of pre-allocated bytes. Always ≥ 0.
-
size
Returns the current size of the buffer. -
isEmpty
public boolean isEmpty() -
isNotEmpty
public boolean isNotEmpty()- Specified by:
isNotEmptyin interfaceIHasSize- Returns:
trueif at least one item is present,falseif no item is present.- See Also:
-
startsWith
-
startsWith
-
getAsString
Converts the buffer's contents into a string by decoding the bytes using the specifiedcharsetName. The length of the newStringis a function of the charset, and hence may not be equal to the length of the byte array.This method always replaces malformed-input and unmappable-character sequences with this charset's default replacement string. The
CharsetDecoderclass should be used when more control over the decoding process is required.- Parameters:
aCharset- the charset to be used. May not benull.- Returns:
- String decoded from the buffer's contents.
-
getAsString
Converts the buffer's contents into a string by decoding the bytes using the specifiedcharsetName. The length of the newStringis a function of the charset, and hence may not be equal to the length of the byte array.This method always replaces malformed-input and unmappable-character sequences with this charset's default replacement string. The
CharsetDecoderclass should be used when more control over the decoding process is required.- Parameters:
nLength- The number of bytes to be converted to a String. Must be ≥ 0.aCharset- the charset to be used. May not benull.- Returns:
- String decoded from the buffer's contents.
-
getAsString
@Nonnull public String getAsString(@Nonnegative int nOfs, @Nonnegative int nLength, @Nonnull Charset aCharset) Converts the buffer's contents into a string by decoding the bytes using the specifiedcharsetName. The length of the newStringis a function of the charset, and hence may not be equal to the length of the byte array.This method always replaces malformed-input and unmappable-character sequences with this charset's default replacement string. The
CharsetDecoderclass should be used when more control over the decoding process is required.- Parameters:
nOfs- The start index to usenLength- The number of bytes to be converted to a String. Must be ≥ 0.aCharset- the charset to be used. May not benull.- Returns:
- String decoded from the buffer's contents.
-
directGetBuffer
- Returns:
- The internally used byte buffer. Never
null. Handle with care!
-
getBufferOrCopy
- Returns:
- The direct buffer, if the array size and the count are identical, a copy otherwise.
- Since:
- 9.1.3
- See Also:
-
close
public void close()Closing aByteArrayOutputStreamhas no effect. The methods in this class can be called after the stream has been closed without generating anIOException. This operation does nothing on this class.- Specified by:
closein interfaceAutoCloseable- Specified by:
closein interfaceCloseable- Overrides:
closein classOutputStream
-
getAsInputStream
Create a new InputStream from the contained byte array WITHOUT COPYING it. So please be careful as this method is not thread-safe and any modifications done later on this object are NOT reflected in the InputStream!
This is a shortcut fornew NonBlockingByteArrayInputStream (directGetBuffer (), 0, getSize ())- Returns:
- A new
NonBlockingByteArrayInputStream. - Since:
- 9.0.0
-
toString
-