Package com.cedarsoftware.util
Class FastByteArrayOutputStream
java.lang.Object
java.io.OutputStream
com.cedarsoftware.util.FastByteArrayOutputStream
- All Implemented Interfaces:
Closeable,Flushable,AutoCloseable
Faster version of ByteArrayOutputStream that does not have synchronized methods.
Like ByteArrayOutputStream, this class is not thread-safe and has a theoretical
limit of approximately 2GB (Integer.MAX_VALUE bytes).
- Author:
- John DeRegnaucourt ([email protected])
Copyright (c) Cedar Software LLC
Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at
License
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionvoidclose()byte[]intgetCount()Returns the number of valid bytes in the internal buffer.byte[]Returns the internal buffer directly without copying.voidreset()intsize()byte[]Creates a FastByteArrayInputStream that reads from this stream's data.toString()Converts the buffer's contents into a string using the specified charset.voidwrite(byte[] b, int off, int len) voidwrite(int b) voidwriteBytes(byte[] b) voidwriteTo(OutputStream out) Methods inherited from class java.io.OutputStream
flush, nullOutputStream, write
-
Constructor Details
-
FastByteArrayOutputStream
public FastByteArrayOutputStream() -
FastByteArrayOutputStream
public FastByteArrayOutputStream(int size)
-
-
Method Details
-
write
public void write(int b) - Specified by:
writein classOutputStream
-
write
public void write(byte[] b, int off, int len) - Overrides:
writein classOutputStream
-
writeBytes
public void writeBytes(byte[] b) -
reset
public void reset() -
toByteArray
public byte[] toByteArray() -
getBuffer
public byte[] getBuffer() -
getInternalBuffer
public byte[] getInternalBuffer()Returns the internal buffer directly without copying.Warning: The returned array may be larger than the actual data written. Use
getCount()to determine how many bytes are valid. Modifying the returned array will affect this stream's data.- Returns:
- the internal buffer (not a copy)
-
getCount
public int getCount()Returns the number of valid bytes in the internal buffer. Use withgetInternalBuffer()for zero-copy access.- Returns:
- the number of valid bytes written to this stream
-
toInputStream
Creates a FastByteArrayInputStream that reads from this stream's data.Note: This creates a copy of the data. For zero-copy access, use
getInternalBuffer()andgetCount()directly.- Returns:
- a new FastByteArrayInputStream containing this stream's data
-
size
public int size() -
toString
-
toString
Converts the buffer's contents into a string using the specified charset.- Parameters:
charset- the charset to use for decoding the bytes- Returns:
- the string decoded from the buffer's contents
-
writeTo
-
close
public void close()- Specified by:
closein interfaceAutoCloseable- Specified by:
closein interfaceCloseable- Overrides:
closein classOutputStream
-