Class FastByteArrayOutputStream

java.lang.Object
java.io.OutputStream
com.cedarsoftware.util.FastByteArrayOutputStream
All Implemented Interfaces:
Closeable, Flushable, AutoCloseable

public class FastByteArrayOutputStream extends OutputStream
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 Details

    • FastByteArrayOutputStream

      public FastByteArrayOutputStream()
    • FastByteArrayOutputStream

      public FastByteArrayOutputStream(int size)
  • Method Details

    • write

      public void write(int b)
      Specified by:
      write in class OutputStream
    • write

      public void write(byte[] b, int off, int len)
      Overrides:
      write in class OutputStream
    • 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 with getInternalBuffer() for zero-copy access.
      Returns:
      the number of valid bytes written to this stream
    • toInputStream

      public FastByteArrayInputStream 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() and getCount() directly.

      Returns:
      a new FastByteArrayInputStream containing this stream's data
    • size

      public int size()
    • toString

      public String toString()
      Overrides:
      toString in class Object
    • toString

      public String toString(Charset charset)
      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

      public void writeTo(OutputStream out)
    • close

      public void close()
      Specified by:
      close in interface AutoCloseable
      Specified by:
      close in interface Closeable
      Overrides:
      close in class OutputStream