Arbeiten mit dem Dateisystem in Rust: Ein praktischer Leitfaden

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

Arbeiten mit dem Dateisystem in Rust: In der Praxis

\n\n

Rust ist eine moderne systemnahe Programmiersprache, die hohe Leistung mit Speichersicherheit kombiniert. Eine der wichtigsten Aufgaben, vor denen jeder Entwickler steht, ist die Arbeit mit dem Dateisystem. In diesem Artikel werden wir anhand praktischer Beispiele erläutern, wie man Dateien liest und schreibt, Verzeichnisse erstellt, Fehler behandelt und andere Operationen mit dem Dateisystem in Rust durchführt.

\n\n

Wichtige Module für die Arbeit mit dem Dateisystem

\n\n

In Rust ist die gesamte Arbeit mit dem Dateisystem in der Standardbibliothek konzentriert. Die wichtigsten Module sind:

\n\n
    \n
  • std::fs — Funktionen für die Arbeit mit Dateien und Verzeichnissen (Lesen, Schreiben, Erstellen, Löschen).
  • \n
  • std::path — Arbeit mit Pfaden (Path, PathBuf).
  • \n
  • std::io — Ein-/Ausgabe, einschließlich der Traits Read und Write.
  • \n
\n\n

Um zu beginnen, reicht es aus, die benötigten Module zu importieren:

\n\n
use std::fs;\nuse std::path::Path;\nuse std::io::prelude::*;\nuse std::fs::File;
\n\n

Dateien lesen in Rust

\n\n

Der einfachste Weg, eine gesamte Datei zu lesen, ist die Verwendung der Funktion fs::read_to_string. Sie gibt ein Result<String> zurück, was eine bequeme Fehlerbehandlung ermöglicht.

\n\n
use std::fs;\n\nfn main() {\n    let file_path = "example.txt";\n    \n    match fs::read_to_string(file_path) {\n        Ok(content) => println!("Dateiinhalt:\\n{}", content),\n        Err(e) => eprintln!("Fehler beim Lesen der Datei: {}", e),\n    }\n}
\n\n

Wenn Sie eine Datei zeilenweise lesen müssen (z. B. bei großen Dateien), verwenden Sie BufReader:

\n\n
use std::fs::File;\nuse std::io::{BufRead, BufReader};\n\nfn main() {\n    let file = File::open("example.txt").expect("Datei konnte nicht geöffnet werden");\n    let reader = BufReader::new(file);\n\n    for line in reader.lines() {\n        match line {\n            Ok(content) => println!("{}", content),\n            Err(e) => eprintln!("Fehler beim Lesen der Zeile: {}", e),\n        }\n    }\n}
\n\n

Daten in Dateien schreiben

\n\n

Verwenden Sie zum Schreiben von Daten in eine Datei fs::write (einfaches Schreiben eines Strings) oder File::create mit anschließendem Schreiben über write! oder writeln!.

\n\n
use std::fs;\n\nfn main() {\n    let content = "Hallo, Welt!\\nDies ist eine Zeile zum Schreiben.";\n    fs::write("output.txt", content).expect("Fehler beim Schreiben der Datei");\n    println!("Datei erfolgreich geschrieben");\n}
\n\n

Verwenden Sie für sequenzielles Schreiben oder Anhängen von Daten OpenOptions:

\n\n
use std::fs::OpenOptions;\nuse std::io::Write;\n\nfn main() {\n    let mut file = OpenOptions::new()\n        .append(true)  // Datei anhängen\n        .create(true)  // erstellen, falls nicht vorhanden\n        .open("log.txt")\n        .expect("Datei konnte nicht geöffnet werden");\n\n    writeln!(file, "Logeintrag: {}", chrono::Local::now()).expect("Fehler beim Schreiben");\n}
\n\n

Arbeiten mit Verzeichnissen und Pfaden

\n\n

Rust bietet praktische Werkzeuge zum Erstellen, Löschen und Durchlaufen von Verzeichnissen. Betrachten wir die grundlegenden Operationen.

\n\n

Verzeichnisse erstellen und löschen

\n\n
use std::fs;\n\nfn main() {\n    // Ein einzelnes Verzeichnis erstellen\n    fs::create_dir("new_folder").expect("Fehler beim Erstellen des Verzeichnisses");\n    \n    // Verschachtelte Verzeichnisse erstellen (Analog zu mkdir -p)\n    fs::create_dir_all("parent/child/grandchild").expect("Fehler beim Erstellen verschachtelter Verzeichnisse");\n    \n    // Leeres Verzeichnis löschen\n    fs::remove_dir("new_folder").expect("Fehler beim Löschen des Verzeichnisses");\n    \n    // Verzeichnis mit gesamten Inhalt löschen\n    fs::remove_dir_all("parent").expect("Fehler beim Löschen des Verzeichnisses mit Inhalt");\n}
\n\n

Inhalt eines Verzeichnisses durchlaufen

\n\n

Um eine Liste der Dateien zu erhalten

Blogs

Buchempfehlungen