This is an old revision of the document!
Le but de ce TP est d'apprendre à utiliser
Pour travailler avec des fichiers on doit utiliser le module fs qui se trouve dans la bilbiotheque standard de Rust.
use std::fs;
Le struct File renvoie un objet donnant accès à un fichier ouvert sur le système de fichiers.
Une instance d'un fichier peut être lue et/ou écrite en fonction des options avec lesquelles elle a été ouverte. Les fichiers implémentent également Seek pour modifier le curseur logique que le fichier contient en interne.
Les fichiers sont automatiquement fermés lorsqu'ils sortent de scope. Les erreurs détectées à la fermeture sont ignorées par l'implémentation de Drop. Utilisez la méthode sync_all si ces erreurs doivent être gérées manuellement.
La fonction File::create() ouvre un fichier en mode read-only.
Cette fonction créera un fichier s'il n'existe pas et le tronquera s'il existe.
Selon la plate-forme, cette fonction peut échouer si le chemin d'accès complet au répertoire n'existe pas.
use std::fs::File; fn main() -> std::io::Result<()> { let mut f = File::create("foo.txt")?; Ok(()) }
La fonction File::open() tente d'ouvrir un fichier en mode read-only.
use std::fs::File; fn main() -> std::io::Result<()> { let mut f = File::open("foo.txt")?; Ok(()) }
Pour lire à partir d'un fichier, nous utilisons la fonction read_to_string(file_path):
use std::fs; use std::env; fn main() { println!("In file {}", file_path); let contents = fs::read_to_string(file_path) .expect("Should have been able to read the file"); println!("With text:\n{contents}"); }
Cette struct renvoie informations de métadonnées sur un fichier.
Ce module contient des méthodes pour récupérer des informations sur un fichier telles que le type de fichier, les autorisations, etc.
Le but de ces types de Result est de coder les informations de gestion des erreurs. Result est c'est une énumération avec les variantes:
enum Result<T, E> { Ok(T), Err(E), }
T représente le type de la valeur qui sera renvoyée en cas de réussite dans la variante Ok, et E représente le type d'erreur qui sera renvoyée en cas d'échec dans la variante Err.
Étant donné que Result a ces paramètres de type génériques, nous pouvons utiliser le type Result et les fonctions qui y sont définies dans de nombreuses situations différentes où la valeur réussie et la valeur d'erreur que nous voulons renvoyer peuvent différer.
std::str::from_utf8(&buffer[0..len]).unwrap()
// utilisé pour les permissions Linux use std::os::unix::fs::MetadataExt; // utilisé pour trouver le descripteur de fichier use std::os::unix::io::AsRawFd; // utilisé pour la fonction read use std::io::Read;