Class DataOutput

    • Constructor Summary

      Constructors 
      Constructor Description
      DataOutput()  
    • Method Summary

      All Methods Instance Methods Abstract Methods Concrete Methods 
      Modifier and Type Method Description
      void copyBytes​(DataInput input, long numBytes)
      Copy numBytes bytes from input to ourself.
      abstract void writeByte​(byte b)
      Writes a single byte.
      void writeBytes​(byte[] b, int length)
      Writes an array of bytes.
      abstract void writeBytes​(byte[] b, int offset, int length)
      Writes an array of bytes.
      void writeInt​(int i)
      Writes an int as four bytes.
      void writeLong​(long i)
      Writes a long as eight bytes.
      void writeShort​(short i)
      Writes a short as two bytes.
      void writeString​(java.lang.String s)
      Writes a string.
      void writeStringSet​(java.util.Set<java.lang.String> set)
      Writes a String set.
      void writeStringStringMap​(java.util.Map<java.lang.String,​java.lang.String> map)
      Writes a String map.
      void writeVInt​(int i)
      Writes an int in a variable-length format.
      void writeVLong​(long i)
      Writes an long in a variable-length format.
      • Methods inherited from class java.lang.Object

        equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Constructor Detail

      • DataOutput

        public DataOutput()
    • Method Detail

      • writeByte

        public abstract void writeByte​(byte b)
                                throws java.io.IOException
        Writes a single byte.

        The most primitive data type is an eight-bit byte. Files are accessed as sequences of bytes. All other data types are defined as sequences of bytes, so file formats are byte-order independent.

        Throws:
        java.io.IOException
        See Also:
        DataInput.readByte()
      • writeBytes

        public void writeBytes​(byte[] b,
                               int length)
                        throws java.io.IOException
        Writes an array of bytes.
        Parameters:
        b - the bytes to write
        length - the number of bytes to write
        Throws:
        java.io.IOException
        See Also:
        DataInput.readBytes(byte[],int,int)
      • writeBytes

        public abstract void writeBytes​(byte[] b,
                                        int offset,
                                        int length)
                                 throws java.io.IOException
        Writes an array of bytes.
        Parameters:
        b - the bytes to write
        offset - the offset in the byte array
        length - the number of bytes to write
        Throws:
        java.io.IOException
        See Also:
        DataInput.readBytes(byte[],int,int)
      • writeInt

        public void writeInt​(int i)
                      throws java.io.IOException
        Writes an int as four bytes.

        32-bit unsigned integer written as four bytes, high-order bytes first.

        Throws:
        java.io.IOException
        See Also:
        DataInput.readInt()
      • writeShort

        public void writeShort​(short i)
                        throws java.io.IOException
        Writes a short as two bytes.
        Throws:
        java.io.IOException
        See Also:
        DataInput.readShort()
      • writeVInt

        public final void writeVInt​(int i)
                             throws java.io.IOException
        Writes an int in a variable-length format. Writes between one and five bytes. Smaller values take fewer bytes. Negative numbers are supported, but should be avoided.

        VByte is a variable-length format for positive integers is defined where the high-order bit of each byte indicates whether more bytes remain to be read. The low-order seven bits are appended as increasingly more significant bits in the resulting integer value. Thus values from zero to 127 may be stored in a single byte, values from 128 to 16,383 may be stored in two bytes, and so on.

        VByte Encoding Example

        Value Byte 1 Byte 2 Byte 3
        0 00000000
        1 00000001
        2 00000010
        ...
        127 01111111
        128 10000000 00000001
        129 10000001 00000001
        130 10000010 00000001
        ...
        16,383 11111111 01111111
        16,384 10000000 10000000 00000001
        16,385 10000001 10000000 00000001
        ...

        This provides compression while still being efficient to decode.

        Parameters:
        i - Smaller values take fewer bytes. Negative numbers are supported, but should be avoided.
        Throws:
        java.io.IOException - If there is an I/O error writing to the underlying medium.
        See Also:
        DataInput.readVInt()
      • writeLong

        public void writeLong​(long i)
                       throws java.io.IOException
        Writes a long as eight bytes.

        64-bit unsigned integer written as eight bytes, high-order bytes first.

        Throws:
        java.io.IOException
        See Also:
        DataInput.readLong()
      • writeVLong

        public final void writeVLong​(long i)
                              throws java.io.IOException
        Writes an long in a variable-length format. Writes between one and nine bytes. Smaller values take fewer bytes. Negative numbers are not supported.

        The format is described further in writeVInt(int).

        Throws:
        java.io.IOException
        See Also:
        DataInput.readVLong()
      • writeString

        public void writeString​(java.lang.String s)
                         throws java.io.IOException
        Writes a string.

        Writes strings as UTF-8 encoded bytes. First the length, in bytes, is written as a VInt, followed by the bytes.

        Throws:
        java.io.IOException
        See Also:
        DataInput.readString()
      • copyBytes

        public void copyBytes​(DataInput input,
                              long numBytes)
                       throws java.io.IOException
        Copy numBytes bytes from input to ourself.
        Throws:
        java.io.IOException
      • writeStringStringMap

        public void writeStringStringMap​(java.util.Map<java.lang.String,​java.lang.String> map)
                                  throws java.io.IOException
        Writes a String map.

        First the size is written as an Int32, followed by each key-value pair written as two consecutive Strings.

        Parameters:
        map - Input map. May be null (equivalent to an empty map)
        Throws:
        java.io.IOException
      • writeStringSet

        public void writeStringSet​(java.util.Set<java.lang.String> set)
                            throws java.io.IOException
        Writes a String set.

        First the size is written as an Int32, followed by each value written as a String.

        Parameters:
        set - Input set. May be null (equivalent to an empty set)
        Throws:
        java.io.IOException