Struct std::io::BufReader 1.0.0
[−]
[src]
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
use std::io::prelude::*; use std::io::BufReader; use std::fs::File; fn main() -> std::io::Result<()> { let f = File::open("log.txt")?; let mut reader = BufReader::new(f); let mut line = String::new(); let len = reader.read_line(&mut line)?; println!("First line is {} bytes long", len); Ok(()) }Run
Methods
impl<R: Read> BufReader<R>
[src]
[−]
impl<R: Read> BufReader<R>
ⓘImportant traits for BufReader<R>pub fn new(inner: R) -> BufReader<R>
[src]
[−]
pub fn new(inner: R) -> BufReader<R>
Creates a new BufReader
with a default buffer capacity.
Examples
use std::io::BufReader; use std::fs::File; fn main() -> std::io::Result<()> { let f = File::open("log.txt")?; let reader = BufReader::new(f); Ok(()) }Run
ⓘImportant traits for BufReader<R>pub fn with_capacity(cap: usize, inner: R) -> BufReader<R>
[src]
[−]
pub 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:
use std::io::BufReader; use std::fs::File; fn main() -> std::io::Result<()> { let f = File::open("log.txt")?; let reader = BufReader::with_capacity(10, f); Ok(()) }Run
ⓘImportant traits for &'a mut Ipub fn get_ref(&self) -> &R
[src]
[−]
pub fn get_ref(&self) -> &R
Gets a reference to the underlying reader.
It is inadvisable to directly read from the underlying reader.
Examples
use std::io::BufReader; use std::fs::File; fn main() -> std::io::Result<()> { let f1 = File::open("log.txt")?; let reader = BufReader::new(f1); let f2 = reader.get_ref(); Ok(()) }Run
ⓘImportant traits for &'a mut Ipub fn get_mut(&mut self) -> &mut R
[src]
[−]
pub 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
use std::io::BufReader; use std::fs::File; fn main() -> std::io::Result<()> { let f1 = File::open("log.txt")?; let mut reader = BufReader::new(f1); let f2 = reader.get_mut(); Ok(()) }Run
pub fn is_empty(&self) -> bool
[src]
[−]
pub fn is_empty(&self) -> bool
: use .buffer().is_empty() instead
🔬 This is a nightly-only experimental API. (bufreader_is_empty
#45323)
recently added
Returns true
if there are no bytes in the internal buffer.
Examples
use std::io::BufReader; use std::io::BufRead; use std::fs::File; fn main() -> std::io::Result<()> { let f1 = File::open("log.txt")?; let mut reader = BufReader::new(f1); assert!(reader.is_empty()); if reader.fill_buf()?.len() > 0 { assert!(!reader.is_empty()); } Ok(()) }Run
pub fn buffer(&self) -> &[u8]
[src]
[−]
pub fn buffer(&self) -> &[u8]
Returns a reference to the internally buffered data.
Unlike fill_buf
, this will not attempt to fill the buffer if it is empty.
Examples
# #![feature(bufreader_buffer)]
use std::io::{BufReader, BufRead};
use std::fs::File;
fn main() -> std::io::Result<()> {
let f = File::open("log.txt")?;
let mut reader = BufReader::new(f);
assert!(reader.buffer().is_empty());
if reader.fill_buf()?.len() > 0 {
assert!(!reader.buffer().is_empty());
}
Ok(())
}
pub fn into_inner(self) -> R
[src]
[−]
pub fn into_inner(self) -> R
Unwraps this BufReader
, returning the underlying reader.
Note that any leftover data in the internal buffer is lost.
Examples
use std::io::BufReader; use std::fs::File; fn main() -> std::io::Result<()> { let f1 = File::open("log.txt")?; let reader = BufReader::new(f1); let f2 = reader.into_inner(); Ok(()) }Run
impl<R: Seek> BufReader<R>
[src]
[−]
impl<R: Seek> BufReader<R>
pub fn seek_relative(&mut self, offset: i64) -> Result<()>
[src]
[−]
pub fn seek_relative(&mut self, offset: i64) -> Result<()>
Seeks relative to the current position. If the new position lies within the buffer, the buffer will not be flushed, allowing for more efficient seeks. This method does not return the location of the underlying reader, so the caller must track this information themselves if it is required.
Trait Implementations
impl<R: Read> Read for BufReader<R>
[src]
[+]
impl<R: Read> Read for BufReader<R>
impl<R: Read> BufRead for BufReader<R>
[src]
[+]
impl<R: Read> BufRead for BufReader<R>
impl<R> Debug for BufReader<R> where
R: Debug,
[src]
[+]
impl<R> Debug for BufReader<R> where
R: Debug,
impl<R: Seek> Seek for BufReader<R>
[src]
[+]
impl<R: Seek> Seek for BufReader<R>