Lecture de fichiers en Rust

RustRustBeginner
Pratiquer maintenant

This tutorial is from open-source community. Access the source code

💡 Ce tutoriel est traduit par l'IA à partir de la version anglaise. Pour voir la version originale, vous pouvez cliquer ici

Introduction

Dans ce laboratoire, la fonction open est présentée comme un moyen d'ouvrir un fichier en mode lecture seule en fournissant le chemin vers le fichier souhaité. La fonction renvoie un objet File qui possède le descripteur de fichier et prend soin de fermer le fichier lorsqu'il n'est plus nécessaire.

Pour utiliser la fonction open, il est nécessaire d'importer les modules nécessaires tels que std::fs::File, std::io::prelude::* et std::path::Path. La méthode File::open est ensuite appelée avec le chemin en tant qu'argument. Si le fichier est ouvert avec succès, la fonction renvoie un objet Result<File, io::Error>, sinon, elle panique avec un message d'erreur.

Une fois le fichier ouvert, son contenu peut être lu en utilisant la méthode read_to_string. Cette méthode lit le contenu du fichier dans une chaîne de caractères et renvoie un Result<usize, io::Error>. Si l'opération de lecture est réussie, la chaîne de caractères contiendra le contenu du fichier. Sinon, elle panique avec un message d'erreur.

Dans l'exemple fourni, le contenu du fichier hello.txt est lu et affiché à la console. Le trait drop est utilisé pour s'assurer que le fichier est fermé lorsque l'objet file sort de portée.

Note: Si le laboratoire ne spécifie pas de nom de fichier, vous pouvez utiliser n'importe quel nom de fichier que vous voulez. Par exemple, vous pouvez utiliser main.rs, le compiler et l'exécuter avec rustc main.rs &&./main.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL rust(("Rust")) -.-> rust/FunctionsandClosuresGroup(["Functions and Closures"]) rust(("Rust")) -.-> rust/MemorySafetyandManagementGroup(["Memory Safety and Management"]) rust(("Rust")) -.-> rust/DataStructuresandEnumsGroup(["Data Structures and Enums"]) rust(("Rust")) -.-> rust/ErrorHandlingandDebuggingGroup(["Error Handling and Debugging"]) rust(("Rust")) -.-> rust/AdvancedTopicsGroup(["Advanced Topics"]) rust(("Rust")) -.-> rust/BasicConceptsGroup(["Basic Concepts"]) rust(("Rust")) -.-> rust/DataTypesGroup(["Data Types"]) rust/BasicConceptsGroup -.-> rust/variable_declarations("Variable Declarations") rust/BasicConceptsGroup -.-> rust/mutable_variables("Mutable Variables") rust/DataTypesGroup -.-> rust/string_type("String Type") rust/FunctionsandClosuresGroup -.-> rust/function_syntax("Function Syntax") rust/FunctionsandClosuresGroup -.-> rust/expressions_statements("Expressions and Statements") rust/MemorySafetyandManagementGroup -.-> rust/lifetime_specifiers("Lifetime Specifiers") rust/DataStructuresandEnumsGroup -.-> rust/method_syntax("Method Syntax") rust/ErrorHandlingandDebuggingGroup -.-> rust/panic_usage("panic! Usage") rust/AdvancedTopicsGroup -.-> rust/operator_overloading("Traits for Operator Overloading") subgraph Lab Skills rust/variable_declarations -.-> lab-99270{{"Lecture de fichiers en Rust"}} rust/mutable_variables -.-> lab-99270{{"Lecture de fichiers en Rust"}} rust/string_type -.-> lab-99270{{"Lecture de fichiers en Rust"}} rust/function_syntax -.-> lab-99270{{"Lecture de fichiers en Rust"}} rust/expressions_statements -.-> lab-99270{{"Lecture de fichiers en Rust"}} rust/lifetime_specifiers -.-> lab-99270{{"Lecture de fichiers en Rust"}} rust/method_syntax -.-> lab-99270{{"Lecture de fichiers en Rust"}} rust/panic_usage -.-> lab-99270{{"Lecture de fichiers en Rust"}} rust/operator_overloading -.-> lab-99270{{"Lecture de fichiers en Rust"}} end

open

La fonction open peut être utilisée pour ouvrir un fichier en mode lecture seule.

Un objet File possède une ressource, le descripteur de fichier, et prend soin de fermer le fichier lorsqu'il est détruit (drop).

use std::fs::File;
use std::io::prelude::*;
use std::path::Path;

fn main() {
    // Crée un chemin vers le fichier souhaité
    let path = Path::new("hello.txt");
    let display = path.display();

    // Ouvre le chemin en mode lecture seule, renvoie `io::Result<File>`
    let mut file = match File::open(&path) {
        Err(why) => panic!("impossible d'ouvrir {}: {}", display, why),
        Ok(file) => file,
    };

    // Lit le contenu du fichier dans une chaîne de caractères, renvoie `io::Result<usize>`
    let mut s = String::new();
    match file.read_to_string(&mut s) {
        Err(why) => panic!("impossible de lire {}: {}", display, why),
        Ok(_) => print!("{} contient:\n{}", display, s),
    }

    // L'objet `file` sort de portée, et le fichier "hello.txt" est fermé
}

Voici la sortie réussie attendue :

$ echo "Hello World!" > hello.txt
$ rustc open.rs && ./open
hello.txt contient:
Hello World!

(On vous encourage à tester l'exemple précédent dans différentes conditions de défaillance : hello.txt n'existe pas, ou hello.txt n'est pas lisible, etc.)

Résumé

Félicitations! Vous avez terminé le laboratoire Open. Vous pouvez pratiquer d'autres laboratoires sur LabEx pour améliorer vos compétences.