Метод openRead
Метод openRead класса File создает и возвращает
поток Stream, который читает содержимое файла
по частям (чанками). В первый параметр мы передаем
начальную позицию чтения в байтах, во второй -
конечную позицию (не включая ее). Если параметры
не указаны, файл читается целиком с самого начала.
Метод является асинхронным и возвращает
Stream<List<int>>.
Синтаксис
file.openRead([int start, int end])
Пример
Давайте создадим файл и прочитаем его содержимое
с помощью потока openRead:
import 'dart:io';
import 'dart:convert';
void main() async
{
File file = File('test.txt');
await file.writeAsString('abcde');
Stream<List<int>> stream = file.openRead();
String res = await stream.transform(utf8.decoder).join();
print(res);
}
Результат выполнения кода:
"abcde"
Пример
Давайте прочитаем только часть файла, указав начальную и конечную позиции в байтах:
import 'dart:io';
import 'dart:convert';
void main() async
{
File file = File('test.txt');
await file.writeAsString('12345');
Stream<List<int>> stream = file.openRead(1, 4);
String res = await stream.transform(utf8.decoder).join();
print(res);
}
Результат выполнения кода:
"234"
Пример
Давайте обработаем поток по частям с помощью
метода listen:
import 'dart:io';
import 'dart:convert';
void main() async
{
File file = File('test.txt');
await file.writeAsString('abcde');
Stream<List<int>> stream = file.openRead();
stream.transform(utf8.decoder).listen((chunk) {
print(chunk);
});
}
Результат выполнения кода:
"abcde"
Смотрите также
-
метод
readAsString,
который читает весь файл как строку -
метод
readAsBytes,
который читает весь файл как байты -
метод
readAsLines,
который читает файл как список строк -
метод
open,
который открывает файл для чтения и записи