Struct std::io::BufReader [] [src]

pub struct BufReader<R> {
    // some fields omitted
}

The BufReader struct adds buffering to any reader.

It can be excessively inefficient to work directly with a Read instance. For example, every call to read on TcpStream results in a system call. A BufReader performs large, infrequent reads on the underlying Read and maintains an in-memory buffer of the results.

Examples

fn main() { use std::io::prelude::*; use std::io::BufReader; use std::fs::File; fn foo() -> std::io::Result<()> { let mut f = try!(File::open("log.txt")); let mut reader = BufReader::new(f); let mut line = String::new(); let len = try!(reader.read_line(&mut line)); println!("First line is {} bytes long", len); Ok(()) } }
use std::io::prelude::*;
use std::io::BufReader;
use std::fs::File;

let mut f = try!(File::open("log.txt"));
let mut reader = BufReader::new(f);

let mut line = String::new();
let len = try!(reader.read_line(&mut line));
println!("First line is {} bytes long", len);

Methods

impl<R: Read> BufReader<R>

fn new(inner: R) -> BufReader<R>

Creates a new BufReader with a default buffer capacity.

Examples

fn main() { use std::io::BufReader; use std::fs::File; fn foo() -> std::io::Result<()> { let mut f = try!(File::open("log.txt")); let mut reader = BufReader::new(f); Ok(()) } }
use std::io::BufReader;
use std::fs::File;

let mut f = try!(File::open("log.txt"));
let mut reader = BufReader::new(f);

fn with_capacity(cap: usize, inner: R) -> BufReader<R>

Creates a new BufReader with the specified buffer capacity.

Examples

Creating a buffer with ten bytes of capacity:

fn main() { use std::io::BufReader; use std::fs::File; fn foo() -> std::io::Result<()> { let mut f = try!(File::open("log.txt")); let mut reader = BufReader::with_capacity(10, f); Ok(()) } }
use std::io::BufReader;
use std::fs::File;

let mut f = try!(File::open("log.txt"));
let mut reader = BufReader::with_capacity(10, f);

fn get_ref(&self) -> &R

Gets a reference to the underlying reader.

It is inadvisable to directly read from the underlying reader.

Examples

fn main() { use std::io::BufReader; use std::fs::File; fn foo() -> std::io::Result<()> { let mut f1 = try!(File::open("log.txt")); let mut reader = BufReader::new(f1); let f2 = reader.get_ref(); Ok(()) } }
use std::io::BufReader;
use std::fs::File;

let mut f1 = try!(File::open("log.txt"));
let mut reader = BufReader::new(f1);

let f2 = reader.get_ref();

fn get_mut(&mut self) -> &mut R

Gets a mutable reference to the underlying reader.

It is inadvisable to directly read from the underlying reader.

Examples

fn main() { use std::io::BufReader; use std::fs::File; fn foo() -> std::io::Result<()> { let mut f1 = try!(File::open("log.txt")); let mut reader = BufReader::new(f1); let f2 = reader.get_mut(); Ok(()) } }
use std::io::BufReader;
use std::fs::File;

let mut f1 = try!(File::open("log.txt"));
let mut reader = BufReader::new(f1);

let f2 = reader.get_mut();

fn into_inner(self) -> R

Unwraps this BufReader, returning the underlying reader.

Note that any leftover data in the internal buffer is lost.

Examples

fn main() { use std::io::BufReader; use std::fs::File; fn foo() -> std::io::Result<()> { let mut f1 = try!(File::open("log.txt")); let mut reader = BufReader::new(f1); let f2 = reader.into_inner(); Ok(()) } }
use std::io::BufReader;
use std::fs::File;

let mut f1 = try!(File::open("log.txt"));
let mut reader = BufReader::new(f1);

let f2 = reader.into_inner();

Trait Implementations

impl<R: Read> Read for BufReader<R>

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

fn read_to_end(&mut self, buf: &mut Vec<u8>) -> Result<usize>

fn read_to_string(&mut self, buf: &mut String) -> Result<usize>

fn read_exact(&mut self, buf: &mut [u8]) -> Result<()>

fn by_ref(&mut self) -> &mut Self where Self: Sized

fn bytes(self) -> Bytes<Self> where Self: Sized

fn chars(self) -> Chars<Self> where Self: Sized

fn chain<R: Read>(self, next: R) -> Chain<Self, R> where Self: Sized

fn take(self, limit: u64) -> Take<Self> where Self: Sized

fn tee<W: Write>(self, out: W) -> Tee<Self, W> where Self: Sized

impl<R: Read> BufRead for BufReader<R>

fn fill_buf(&mut self) -> Result<&[u8]>

fn consume(&mut self, amt: usize)

fn read_until(&mut self, byte: u8, buf: &mut Vec<u8>) -> Result<usize>

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

fn split(self, byte: u8) -> Split<Self> where Self: Sized

fn lines(self) -> Lines<Self> where Self: Sized

impl<R> Debug for BufReader<R> where R: Debug

fn fmt(&self, fmt: &mut Formatter) -> Result

impl<R: Seek> Seek for BufReader<R>

fn seek(&mut self, pos: SeekFrom) -> Result<u64>