Rust
Fichier I / O
Recherche…
Lire un fichier dans son ensemble en tant que chaîne
use std::fs::File;
use std::io::Read;
fn main() {
let filename = "src/main.rs";
// Open the file in read-only mode.
match File::open(filename) {
// The file is open (no error).
Ok(mut file) => {
let mut content = String::new();
// Read all the file content into a variable (ignoring the result of the operation).
file.read_to_string(&mut content).unwrap();
println!("{}", content);
// The file is automatically closed when is goes out of scope.
},
// Error handling.
Err(error) => {
println!("Error opening file {}: {}", filename, error);
},
}
}
Lire un fichier ligne par ligne
use std::fs::File;
use std::io::{BufRead, BufReader};
fn main() {
let filename = "src/main.rs";
// Open the file in read-only mode (ignoring errors).
let file = File::open(filename).unwrap();
let reader = BufReader::new(file);
// Read the file line by line using the lines() iterator from std::io::BufRead.
for (index, line) in reader.lines().enumerate() {
let line = line.unwrap(); // Ignore errors.
// Show the line and its number.
println!("{}. {}", index + 1, line);
}
}
Ecrire dans un fichier
use std::env;
use std::fs::File;
use std::io::Write;
fn main() {
// Create a temporary file.
let temp_directory = env::temp_dir();
let temp_file = temp_directory.join("file");
// Open a file in write-only (ignoring errors).
// This creates the file if it does not exist (and empty the file if it exists).
let mut file = File::create(temp_file).unwrap();
// Write a &str in the file (ignoring the result).
writeln!(&mut file, "Hello World!").unwrap();
// Write a byte string.
file.write(b"Bytes\n").unwrap();
}
Lire un fichier en tant que Vec
use std::fs::File;
use std::io::Read;
fn read_a_file() -> std::io::Result<Vec<u8>> {
let mut file = try!(File::open("example.data"));
let mut data = Vec::new();
try!(file.read_to_end(&mut data));
return Ok(data);
}
std::io::Result<T>
est un alias pour le Result<T, std::io::Error>
.
La macro try!()
Renvoie la fonction en cas d'erreur.
read_to_end()
est une méthode de std::io::Read
trait, qui doit être use
explicitement d.
read_to_end()
ne renvoie pas les données lues. Au lieu de cela, il place des données dans le conteneur qu'il a fourni.
Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow