Функция new класса BufReader
Функция new класса BufReader создаёт новый буферизованный читатель, который оборачивает указанный источник чтения и добавляет внутренний буфер для повышения производительности при частых операциях чтения. Параметром функция принимает значение, реализующее трейт Read, например файл, стандартный ввод или срез байтов. Буферизация позволяет сократить количество системных вызовов, что особенно важно при чтении небольшими порциями.
Синтаксис
BufReader::new(inner)
Пример
Давайте создадим буферизованный читатель поверх стандартного ввода и прочитаем одну строку:
use std::io::{self, BufRead, BufReader};
fn main()
{
let stdin = io::stdin();
let mut reader = BufReader::new(stdin.lock());
let mut line = String::new();
println!("Enter some text:");
reader.read_line(&mut line).unwrap();
println!("You entered: {}", line.trim());
}
Результат выполнения кода:
Enter some text:
"abcde"
You entered: "abcde"
Пример
Давайте создадим буферизованный читатель поверх среза байтов и прочитаем все строки по очереди:
use std::io::{BufRead, BufReader};
fn main()
{
let data = "abcde\n12345\n";
let reader = BufReader::new(data.as_bytes());
for line in reader.lines()
{
let line = line.unwrap();
println!("{}", line);
}
}
Результат выполнения кода:
"abcde"
"12345"
Пример
Давайте создадим буферизованный читатель с заданным размером буфера и прочитаем байты в вектор:
use std::io::{BufReader, Read};
fn main()
{
let data = b"abcde";
let mut reader = BufReader::with_capacity(8, &data[..]);
let mut buf = Vec::new();
reader.read_to_end(&mut buf).unwrap();
println!("{:?}", buf);
}
Результат выполнения кода:
[97, 98, 99, 100, 101]
Смотрите также
-
класс
BufReader,
который представляет буферизованный читатель -
метод
read_line,
который читает одну строку из буферизованного источника -
метод
lines,
который возвращает итератор по строкам источника -
метод
read_to_string,
который читает всё содержимое источника в строку