skip method
Skips characters.
This method will block until some characters are available, an I/O error occurs, or the end of the stream is reached.
Parameters
n
: The number of characters to skip
Returns
The number of characters actually skipped.
Example
final reader = FileReader('data.txt');
try {
// Skip the first 100 characters (e.g., header)
final skipped = await reader.skip(100);
print('Skipped $skipped characters');
// Now read the actual content
final content = await reader.readAll();
processContent(content);
} finally {
await reader.close();
}
Throws IOException if an I/O error occurs. Throws StreamClosedException if the reader has been closed.
Implementation
@override
Future<int> skip(int n) async {
checkClosed();
if (n <= 0) {
return 0;
}
int totalSkipped = 0;
// First, skip from buffer if available
if (_position < _count) {
final availableInBuffer = _count - _position;
final toSkipFromBuffer = n.clamp(0, availableInBuffer);
_position += toSkipFromBuffer;
totalSkipped += toSkipFromBuffer;
n -= toSkipFromBuffer;
}
// If we need to skip more, delegate to underlying reader
if (n > 0) {
final skippedFromReader = await _reader.skip(n);
totalSkipped += skippedFromReader;
}
return totalSkipped;
}