DataInputStream class
A coroutines-style wrapper around a
Stream<List<int>>
, like you get from a socket or a file in Dart.
This lets you asynchronously read a stream using an API much like
java.io.DataInputStream
.
Note that this class does not read all of the data into a buffer first, so it is very space-efficient. It does, however, use asynchrony at a fairly granular level. This might have performance implications, depending on how efficient async/await are in current Dart implementations. As of this writing (Jan. 2020), I have not measured.
See also ByteBufferDataInputStream.
Constructors
-
DataInputStream(Stream<
List< source, [Endian endian = Endian.big])int> > -
Create a stream that takes its data from source with the given
initial
endian
setting. Choose Endian.big for interoperability withjava.io.DataInputStream
.
Properties
-
bytesAvailable
→ Future<
int> -
Returns the number of bytes that can be read from the internal buffer.
If we're at EOF, returns zero, otherwise, returns a non-zero positive
integer. If the buffer is currently exhausted, this method will wait
for the next block of data to come in.
no setter
- endian ↔ Endian
-
The current endian setting, either Endian.big or Endian.little.
This is used for converting numeric types. Choose Endian.big
for interoperability with
java.io.DataInputStream
.getter/setter pair - hashCode → int
-
The hash code for this object.
no setterinherited
- runtimeType → Type
-
A representation of the runtime type of the object.
no setterinherited
Methods
-
close(
) → Future< void> - Cancel our underling stream.
-
debugStream(
[Random? random]) → Stream< Uint8List> - Test out the buffer logic by returning randomized, smallish chunks of data at a time. The stream obtained from this method can be fed into another DataInputStream.
-
isEOF(
) → Future< bool> - Check if we're at end of file.
-
noSuchMethod(
Invocation invocation) → dynamic -
Invoked when a nonexistent method or property is accessed.
inherited
-
read(
) → Future< int> - Returns the next unsigned byte, or -1 on EOF
-
readBoolean(
) → Future< bool> - Reads a byte, and returns false if it is 0, true otherwise.
-
readByte(
) → Future< int> -
Reads a signed byte. Returns an
int
between -128 and 127, inclusive. See also readUnsignedByte. -
readByteDataImmutable(
int num) → Future< ByteData> - Returns a potentially immutable ByteData containing the desired number of bytes.
-
readBytes(
int num) → Future< Uint8List> - Returns a new, mutable Uint8List containing the desired number of bytes.
-
readBytesImmutable(
int num) → Future< Uint8List> - Returns a potentially immutable Uint8List containing the desired number of bytes.
-
readDouble(
) → Future< double> - Reads and returns an 8-byte double, using the current endian setting.
-
readFloat(
) → Future< double> - Reads and returns a 4-byte float, using the current endian setting.
-
readInt(
) → Future< int> - Reads and returns a 4-byte signed integer decoded with the current endian setting.
-
readLong(
) → Future< int> - Reads and returns an 8-byte integer decoded with the current endian setting.
-
readShort(
) → Future< int> - Reads and returns a 2-byte signed integer decoded with the current endian setting.
-
readUnsignedByte(
) → Future< int> - Reads and returns an unsigned byte.
-
readUnsignedInt(
) → Future< int> - Reads and returns a 4-byte unsigned integer decoded with the current endian setting.
-
readUnsignedLong(
) → Future< int> - Reads and returns an 8-byte integer, converted to a Dart int according to the semantics of ByteData.getUint64 using the current endian setting.
-
readUnsignedShort(
) → Future< int> - Reads and returns a 2-byte unsigned integer decoded with the current endian setting.
-
readUTF8(
) → Future< String> -
Reads a string encoded in UTF8. This method first reads a 2 byte
unsigned integer decoded with the current endian setting,
giving the number of UTF8 bytes to read. It then reads
those bytes, and converts them to a string using Dart's UTF8 conversion.
This may be incompatible with
java.io.DataOutputStream
for a string that contains nulls. -
remaining(
) → Stream< Uint8List> - Give a stream containing our as-yet-unread bytes.
-
toString(
) → String -
A string representation of this object.
inherited
Operators
-
operator ==(
Object other) → bool -
The equality operator.
inherited