РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
787 of 1245 menu

Класс BufReader

Класс BufReader представляет собой обёртку вокруг любого типа, реализующего трейт Read, и добавляет внутренний буфер для более эффективного чтения данных. Вместо множества мелких операций чтения BufReader выполняет крупные блочные чтения, что снижает накладные расходы на системные вызовы. Параметром конструктор new принимает источник данных, реализующий трейт Read. Размер буфера по умолчанию составляет 8 килобайт.

Класс BufReader реализует трейт BufRead, который предоставляет дополнительные методы, такие как read_line и lines, недоступные для обычного Read.

Синтаксис

use std::io::BufReader; let reader = BufReader::new(inner);

Пример

Давайте создадим BufReader вокруг среза байтов и прочитаем из него данные:

use std::io::BufReader; use std::io::Read; fn main() { let data = b"abcde"; let mut reader = BufReader::new(&data[..]); let mut buffer = String::new(); reader.read_to_string(&mut buffer).unwrap(); println!("{}", buffer); }

Результат выполнения кода:

"abcde"

Пример

Давайте воспользуемся методом read_line из трейта BufRead для построчного чтения:

use std::io::BufReader; use std::io::BufRead; fn main() { let data = b"12345\nabcde\n"; let reader = BufReader::new(&data[..]); for line in reader.lines() { let line = line.unwrap(); println!("{}", line); } }

Результат выполнения кода:

"12345" "abcde"

Пример

Давайте создадим BufReader с явно заданным размером буфера:

use std::io::BufReader; use std::io::BufRead; fn main() { let data = b"abcde"; let mut reader = BufReader::with_capacity(1024, &data[..]); let mut buffer = String::new(); reader.read_line(&mut buffer).unwrap(); println!("{}", buffer); }

Результат выполнения кода:

"abcde"

Смотрите также

  • трейт BufRead,
    который предоставляет методы для буферизованного чтения
  • метод read_line,
    который читает одну строку из буферизованного источника
  • метод lines,
    который возвращает итератор по строкам источника
  • класс BufWriter,
    который обеспечивает буферизованную запись данных
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить