Rust BufReader

고승우·2023년 7월 6일
0
post-thumbnail

Struct std::io::BufReader

pub struct BufReader<R> { /* private fields */ }

BufReader<R>는 모든 reader에 buffering을 추가해준다. Read instance와 함께 작동하기엔 너무 비효율적이다. 가령, TcpStream의 결과를 모두 read한 경우에는 BufReader<R>Read의 결과로 in-memory buffer를 유지할 것이다. BufReader<R>은 작은 입력이 반복될 때, 프로그램을 더 빠르게 해준다. 또한 Vec와 같이 이미 메모리에 있는 것을 읽을 때는 advantage가 없다.
BufReader<R>가 drop될 때, buffer의 내용은 버려진다.

new(inner: R) -> BufReader

default 크기인 8KB의 buffer capacity를 가진 BufReader<R>를 생성한다. inner에는 stfd::io::stdin.lock() 혹은 File::open("log.txt")와 같이 어떻게 입력을 받을 것인지 입력해줘야 한다.

read(&mut self, buf: &mut [u8]) -> Result

몇 byte가 읽혔는지를 반환하면서, 버퍼에 있는 source를 pull한다.

read_line(&mut self, buf: &mut String) -> Result

한 줄을 읽고, String 버퍼에 append한다.

pub fn buffer(&self) -> &[u8]

내부적으로 buffered data의 reference를 반환한다. fill_buf와 다르게 buffer가 비어 있어도 채우지 않는다.

pub fn capacity(&self) -> usize

buffer 내부에서 한 번에 저장할 수 있는 byte의 수를 반환한다.

profile
٩( ᐛ )و 

0개의 댓글