How to Read a file into string, vector, and line by line Rust example

This tutorial shows multiple ways to read a file in Rust with examples.

Rust File read content into a string

Rust provides a standard library std package that provides an fs module with file read and writes operations. The read_to_string function in the fs module takes the path of a file and gives file content into a string. if the file does not exist, It gives an error.

Here is a syntax

pub fn read_to_string<P: AsRef<Path>>(path: P) -> Result<String>

It returns the Result of String, which contains an error as well as String. Here is an example program to read a file into a string in Rust.

use std::fs;

fn main() {
    let str = fs::read_to_string("test.txt").expect("Error in reading the file");
    println!("{}", str);
}

It displays the string in the console.

The above works if the test.txt file is in the current directory.

If the file is not found, It throws the below error thread ‘main’ and panicked at ‘Unable to read file: Os { code: 2, kind: NotFound, message: “The system cannot find the file specified.” }’, test.rs:4:46

Rust File read content into a Vector

This example read the file content to Vec<U8> using the read function from the fs module. Here is an example program

use std::fs;

fn main() {
    let result = fs::read("test.txt").expect("Error in reading the file");
    println!("{}", result.len());
    println!("{:?}", result);

}

The above two work for small files, If you want to read large files, use buffer read.

How to read contents of a file by line in Rust using BufReader

BufferReader in general has a buffer to read File input and output operations efficiently.

  • Create a mutate string for storing file line
  • Create a File object with a path using File::open
  • pass the file instance to the BufReader constructor
  • Call BufReader.read_to_string with a variable that holds file line data -Finally, Print the data
use std::fs::File;
use std::io::{BufReader, Read};

fn main() {
    let mut str = String::new();
    let file = File::open("test.txt").expect("Error in reading file");
    let mut bufferReader = BufReader::new(file);
    bufferReader.read_to_string(&mut str).expect("Unable to read line");
    println!("{}", str);
}

Conclusion

Learned example program to read the file into string and vector and also read contents line by line in rust.