Class LittleEndianDataOutputStream
- java.lang.Object
-
- java.io.OutputStream
-
- java.io.FilterOutputStream
-
- com.google.common.io.LittleEndianDataOutputStream
-
- All Implemented Interfaces:
Closeable
,DataOutput
,Flushable
,AutoCloseable
@Beta @GwtIncompatible public final class LittleEndianDataOutputStream extends FilterOutputStream implements DataOutput
An implementation ofDataOutput
that uses little-endian byte ordering for writingchar
,short
,int
,float
,double
, andlong
values.Note: This class intentionally violates the specification of its supertype
DataOutput
, which explicitly requires big-endian byte order.- Since:
- 8.0
- Author:
- Chris Nokleberg, Keith Bottner
-
-
Field Summary
-
Fields inherited from class java.io.FilterOutputStream
out
-
-
Constructor Summary
Constructors Constructor Description LittleEndianDataOutputStream(OutputStream out)
Creates aLittleEndianDataOutputStream
that wraps the given stream.
-
Method Summary
All Methods Instance Methods Concrete Methods Deprecated Methods Modifier and Type Method Description void
close()
Closes this output stream and releases any system resources associated with the stream.void
write(byte[] b, int off, int len)
Writeslen
bytes from the specifiedbyte
array starting at offsetoff
to this output stream.void
writeBoolean(boolean v)
Writes aboolean
value to this output stream.void
writeByte(int v)
Writes to the output stream the eight low- order bits of the argumentv
.void
writeBytes(String s)
Deprecated.The semantics ofwriteBytes(String s)
are considered dangerous.void
writeChar(int v)
Writes a char as specified byDataOutputStream.writeChar(int)
, except using little-endian byte order.void
writeChars(String s)
Writes aString
as specified byDataOutputStream.writeChars(String)
, except each character is written using little-endian byte order.void
writeDouble(double v)
Writes adouble
as specified byDataOutputStream.writeDouble(double)
, except using little-endian byte order.void
writeFloat(float v)
Writes afloat
as specified byDataOutputStream.writeFloat(float)
, except using little-endian byte order.void
writeInt(int v)
Writes anint
as specified byDataOutputStream.writeInt(int)
, except using little-endian byte order.void
writeLong(long v)
Writes along
as specified byDataOutputStream.writeLong(long)
, except using little-endian byte order.void
writeShort(int v)
Writes ashort
as specified byDataOutputStream.writeShort(int)
, except using little-endian byte order.void
writeUTF(String str)
Writes two bytes of length information to the output stream, followed by the modified UTF-8 representation of every character in the strings
.-
Methods inherited from class java.io.FilterOutputStream
flush, write, write
-
Methods inherited from class java.io.OutputStream
nullOutputStream
-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface java.io.DataOutput
write, write
-
-
-
-
Constructor Detail
-
LittleEndianDataOutputStream
public LittleEndianDataOutputStream(OutputStream out)
Creates aLittleEndianDataOutputStream
that wraps the given stream.- Parameters:
out
- the stream to delegate to
-
-
Method Detail
-
write
public void write(byte[] b, int off, int len) throws IOException
Description copied from class:java.io.FilterOutputStream
Writeslen
bytes from the specifiedbyte
array starting at offsetoff
to this output stream.The
write
method ofFilterOutputStream
calls thewrite
method of one argument on eachbyte
to output.Note that this method does not call the
write
method of its underlying output stream with the same arguments. Subclasses ofFilterOutputStream
should provide a more efficient implementation of this method.- Specified by:
write
in interfaceDataOutput
- Overrides:
write
in classFilterOutputStream
- Parameters:
b
- the data.off
- the start offset in the data.len
- the number of bytes to write.- Throws:
IOException
- if an I/O error occurs.- See Also:
FilterOutputStream.write(int)
-
writeBoolean
public void writeBoolean(boolean v) throws IOException
Description copied from interface:java.io.DataOutput
Writes aboolean
value to this output stream. If the argumentv
istrue
, the value(byte)1
is written; ifv
isfalse
, the value(byte)0
is written. The byte written by this method may be read by thereadBoolean
method of interfaceDataInput
, which will then return aboolean
equal tov
.- Specified by:
writeBoolean
in interfaceDataOutput
- Parameters:
v
- the boolean to be written.- Throws:
IOException
- if an I/O error occurs.
-
writeByte
public void writeByte(int v) throws IOException
Description copied from interface:java.io.DataOutput
Writes to the output stream the eight low- order bits of the argumentv
. The 24 high-order bits ofv
are ignored. (This means thatwriteByte
does exactly the same thing aswrite
for an integer argument.) The byte written by this method may be read by thereadByte
method of interfaceDataInput
, which will then return abyte
equal to(byte)v
.- Specified by:
writeByte
in interfaceDataOutput
- Parameters:
v
- the byte value to be written.- Throws:
IOException
- if an I/O error occurs.
-
writeBytes
@Deprecated public void writeBytes(String s) throws IOException
Deprecated.The semantics ofwriteBytes(String s)
are considered dangerous. Please usewriteUTF(String s)
,writeChars(String s)
or another write method instead.Description copied from interface:java.io.DataOutput
Writes a string to the output stream. For every character in the strings
, taken in order, one byte is written to the output stream. Ifs
isnull
, aNullPointerException
is thrown.If
s.length
is zero, then no bytes are written. Otherwise, the characters[0]
is written first, thens[1]
, and so on; the last character written iss[s.length-1]
. For each character, one byte is written, the low-order byte, in exactly the manner of thewriteByte
method . The high-order eight bits of each character in the string are ignored.- Specified by:
writeBytes
in interfaceDataOutput
- Parameters:
s
- the string of bytes to be written.- Throws:
IOException
- if an I/O error occurs.
-
writeChar
public void writeChar(int v) throws IOException
Writes a char as specified byDataOutputStream.writeChar(int)
, except using little-endian byte order.- Specified by:
writeChar
in interfaceDataOutput
- Parameters:
v
- thechar
value to be written.- Throws:
IOException
- if an I/O error occurs
-
writeChars
public void writeChars(String s) throws IOException
Writes aString
as specified byDataOutputStream.writeChars(String)
, except each character is written using little-endian byte order.- Specified by:
writeChars
in interfaceDataOutput
- Parameters:
s
- the string value to be written.- Throws:
IOException
- if an I/O error occurs
-
writeDouble
public void writeDouble(double v) throws IOException
Writes adouble
as specified byDataOutputStream.writeDouble(double)
, except using little-endian byte order.- Specified by:
writeDouble
in interfaceDataOutput
- Parameters:
v
- thedouble
value to be written.- Throws:
IOException
- if an I/O error occurs
-
writeFloat
public void writeFloat(float v) throws IOException
Writes afloat
as specified byDataOutputStream.writeFloat(float)
, except using little-endian byte order.- Specified by:
writeFloat
in interfaceDataOutput
- Parameters:
v
- thefloat
value to be written.- Throws:
IOException
- if an I/O error occurs
-
writeInt
public void writeInt(int v) throws IOException
Writes anint
as specified byDataOutputStream.writeInt(int)
, except using little-endian byte order.- Specified by:
writeInt
in interfaceDataOutput
- Parameters:
v
- theint
value to be written.- Throws:
IOException
- if an I/O error occurs
-
writeLong
public void writeLong(long v) throws IOException
Writes along
as specified byDataOutputStream.writeLong(long)
, except using little-endian byte order.- Specified by:
writeLong
in interfaceDataOutput
- Parameters:
v
- thelong
value to be written.- Throws:
IOException
- if an I/O error occurs
-
writeShort
public void writeShort(int v) throws IOException
Writes ashort
as specified byDataOutputStream.writeShort(int)
, except using little-endian byte order.- Specified by:
writeShort
in interfaceDataOutput
- Parameters:
v
- theshort
value to be written.- Throws:
IOException
- if an I/O error occurs
-
writeUTF
public void writeUTF(String str) throws IOException
Description copied from interface:java.io.DataOutput
Writes two bytes of length information to the output stream, followed by the modified UTF-8 representation of every character in the strings
. Ifs
isnull
, aNullPointerException
is thrown. Each character in the strings
is converted to a group of one, two, or three bytes, depending on the value of the character.If a character
c
is in the range\u0001
through\u007f
, it is represented by one byte:(byte)c
If a character
c
is\u0000
or is in the range\u0080
through\u07ff
, then it is represented by two bytes, to be written in the order shown:(byte)(0xc0 | (0x1f & (c >> 6))) (byte)(0x80 | (0x3f & c))
If a character
c
is in the range\u0800
throughuffff
, then it is represented by three bytes, to be written in the order shown:(byte)(0xe0 | (0x0f & (c >> 12))) (byte)(0x80 | (0x3f & (c >> 6))) (byte)(0x80 | (0x3f & c))
First, the total number of bytes needed to represent all the characters of
s
is calculated. If this number is larger than65535
, then aUTFDataFormatException
is thrown. Otherwise, this length is written to the output stream in exactly the manner of thewriteShort
method; after this, the one-, two-, or three-byte representation of each character in the strings
is written.The bytes written by this method may be read by the
readUTF
method of interfaceDataInput
, which will then return aString
equal tos
.- Specified by:
writeUTF
in interfaceDataOutput
- Parameters:
str
- the string value to be written.- Throws:
IOException
- if an I/O error occurs.
-
close
public void close() throws IOException
Description copied from class:java.io.FilterOutputStream
Closes this output stream and releases any system resources associated with the stream.When not already closed, the
close
method ofFilterOutputStream
calls itsflush
method, and then calls theclose
method of its underlying output stream.- Specified by:
close
in interfaceAutoCloseable
- Specified by:
close
in interfaceCloseable
- Overrides:
close
in classFilterOutputStream
- Throws:
IOException
- if an I/O error occurs.- See Also:
FilterOutputStream.flush()
,FilterOutputStream.out
-
-