Class DataOutputBuffer

All Implemented Interfaces:
Closeable, DataOutput, Flushable, AutoCloseable

@LimitedPrivate({"HDFS","MapReduce"}) @Unstable public class DataOutputBuffer extends DataOutputStream
A reusable DataOutput implementation that writes to an in-memory buffer.

This saves memory over creating a new DataOutputStream and ByteArrayOutputStream each time data is written.

Typical usage is something like the following:


 DataOutputBuffer buffer = new DataOutputBuffer();
 while (... loop condition ...) {
   buffer.reset();
   ... write buffer using DataOutput methods ...
   byte[] data = buffer.getData();
   int dataLength = buffer.getLength();
   ... write data to its ultimate destination ...
 }
 
  • Constructor Details

    • DataOutputBuffer

      public DataOutputBuffer()
      Constructs a new empty buffer.
    • DataOutputBuffer

      public DataOutputBuffer(int size)
  • Method Details

    • getData

      public byte[] getData()
      Returns the current contents of the buffer. Data is only valid to getLength().
      Returns:
      data byte.
    • getLength

      public int getLength()
      Returns the length of the valid data currently in the buffer.
      Returns:
      length.
    • reset

      public DataOutputBuffer reset()
      Resets the buffer to empty.
      Returns:
      DataOutputBuffer.
    • write

      public void write(DataInput in, int length) throws IOException
      Writes bytes from a DataInput directly into the buffer.
      Parameters:
      in - data input.
      length - length.
      Throws:
      IOException - raised on errors performing I/O.
    • writeTo

      public void writeTo(OutputStream out) throws IOException
      Write to a file stream.
      Parameters:
      out - OutputStream.
      Throws:
      IOException - raised on errors performing I/O.
    • writeInt

      public void writeInt(int v, int offset) throws IOException
      Overwrite an integer into the internal buffer. Note that this call can only be used to overwrite existing data in the buffer, i.e., buffer#count cannot be increased, and DataOutputStream#written cannot be increased.
      Parameters:
      v - v.
      offset - offset.
      Throws:
      IOException - raised on errors performing I/O.