Rust writing to files
last modified February 19, 2025
In this article we show how to write to files in Rust.
File
A file is a named location for storing data. Rust provides the std::fs module for working with files.
Opening a file
To write to a file, we must first open it. The File::create method creates a new file or truncates an existing one.
use std::fs::File;
use std::io::Error;
fn main() -> Result<(), Error> {
let file = File::create("test.txt")?;
Ok(())
}
The program creates a new file called test.txt.
let file = File::create("test.txt")?;
We create a file and store it in a variable.
The ? operator is used to handle errors. If the method returns an error, the program terminates.
Writing to a file
To write data to a file, we use the write! macro.
use std::fs::File;
use std::io::{Error, Write};
fn main() -> Result<(), Error> {
let mut file = File::create("test.txt")?;
writeln!(file, "This is a test file.")?;
Ok(())
}
The program writes a string to the file.
writeln!(file, "This is a test file.")?;
We use the writeln! macro to write a line to the file.
Reading and writing to a file
A file can be opened for both reading and writing. The File::open method opens a file for reading.
use std::fs::File;
use std::io::{Error, Read, Write};
use std::io::prelude::*;
fn main() -> Result<(), Error> {
let mut file = File::open("test.txt")?;
let mut contents = String::new();
file.read_to_string(&mut contents)?;
println!("{contents}");
file.write_all(b"This is a test file.")?;
Ok(())
}
The program reads the contents of the file and writes new data to it.
let mut file = File::open("test.txt")?;
We open the file for reading.
let mut contents = String::new(); file.read_to_string(&mut contents)?;
We read the contents of the file into a string.
file.write_all(b"This is a test file.")?;
We write new data to the file.
Closing a file
It is important to close a file after we are done with it. The File::drop method is used for closing a file.
use std::fs::File;
use std::io::{Error, Read, Write};
use std::io::prelude::*;
fn main() -> Result<(), Error> {
let mut file = File::open("test.txt")?;
let mut contents = String::new();
file.read_to_string(&mut contents)?;
println!("{contents}");
file.write_all(b"This is a test file.")?;
file.drop();
Ok(())
}
The program closes the file after writing to it.
file.drop();
The drop method is called on the file variable.
In this article we have covered writing to files in Rust.
Author
List all Rust tutorials.