readByte method

  1. @override
Future<int> readByte()
override

Reads the next byte of data from the input stream.

The value byte is returned as an int in the range 0 to 255. If no byte is available because the end of the stream has been reached, the value -1 is returned.

This method blocks until input data is available, the end of the stream is detected, or an exception is thrown.

Returns

The next byte of data, or -1 if the end of the stream is reached.

Example

final input = FileInputStream('data.txt');
int byte;
while ((byte = await input.readByte()) != -1) {
  print('Read byte: $byte');
}
await input.close();

Throws IOException if an I/O error occurs. Throws StreamClosedException if the stream has been closed.

Implementation

@override
Future<int> readByte() async {
  await _ensureOpen();

  try {
    final bytes = await _randomAccessFile!.read(1);
    if (bytes.isEmpty) {
      return -1; // End of file
    }
    _position++;
    return bytes[0];
  } catch (e) {
    throw IOException('Error reading from file: ${_file.path}', cause: e);
  }
}