Struct std::io::LineWriter 1.0.0[−][src]
pub struct LineWriter<W: Write> { /* fields omitted */ }
Expand description
包装一个 writer 并缓冲输出到它的内容,每当检测到换行符 (0x0a,
‘\n’`) 时刷新一次。
BufWriter
结构体包装 writer 并缓冲其输出。
但是,仅当它离开作用域或内部缓冲区已满时,才进行此批量写入。
有时,您宁愿在完成时写每一行,而不是一次写整个缓冲区。
输入 LineWriter
。
它确实做到了。
像 BufWriter
一样,当 LineWriter
离开作用域或其内部缓冲区已满时,也会刷新 LineWriter 的缓冲区。
如果丢弃 LineWriter
时缓冲区中仍然有部分行,它将刷新这些内容。
Examples
我们可以使用 LineWriter
一次写入一行,从而大大减少了实际写入文件的次数。
use std::fs::{self, File}; use std::io::prelude::*; use std::io::LineWriter; fn main() -> std::io::Result<()> { let road_not_taken = b"I shall be telling this with a sigh Somewhere ages and ages hence: Two roads diverged in a wood, and I - I took the one less traveled by, And that has made all the difference."; let file = File::create("poem.txt")?; let mut file = LineWriter::new(file); file.write_all(b"I shall be telling this with a sigh")?; // 在遇到换行符 (或内部缓冲区已满) 之前,不写入任何字节。 assert_eq!(fs::read_to_string("poem.txt")?, ""); file.write_all(b"\n")?; assert_eq!( fs::read_to_string("poem.txt")?, "I shall be telling this with a sigh\n", ); // 写剩下的诗。 file.write_all(b"Somewhere ages and ages hence: Two roads diverged in a wood, and I - I took the one less traveled by, And that has made all the difference.")?; // 这首诗的最后一行不是以换行符结束的,所以我们必须刷新或丢弃 `LineWriter` 来完成写作。 file.flush()?; // 确认整首诗是写好的。 assert_eq!(fs::read("poem.txt")?, &road_not_taken[..]); Ok(()) }Run
Implementations
pub fn new(inner: W) -> LineWriter<W>ⓘNotable traits for LineWriter<W>impl<W: Write> Write for LineWriter<W>
[src]
pub fn new(inner: W) -> LineWriter<W>ⓘNotable traits for LineWriter<W>impl<W: Write> Write for LineWriter<W>
[src]Notable traits for LineWriter<W>
impl<W: Write> Write for LineWriter<W>
pub fn with_capacity(capacity: usize, inner: W) -> LineWriter<W>ⓘNotable traits for LineWriter<W>impl<W: Write> Write for LineWriter<W>
[src]
pub fn with_capacity(capacity: usize, inner: W) -> LineWriter<W>ⓘNotable traits for LineWriter<W>impl<W: Write> Write for LineWriter<W>
[src]Notable traits for LineWriter<W>
impl<W: Write> Write for LineWriter<W>
解包此 LineWriter
,返回基础 writer。
返回 writer 之前,将内部缓冲区写出。
Errors
如果刷新缓冲区时发生错误,将返回 Err
。
Examples
use std::fs::File; use std::io::LineWriter; fn main() -> std::io::Result<()> { let file = File::create("poem.txt")?; let writer: LineWriter<File> = LineWriter::new(file); let file: File = writer.into_inner()?; Ok(()) }Run
Trait Implementations
将格式化的字符串写入此 writer,返回遇到的任何错误。 Read more