Rust:
Sprawdzanie, czy katalog istnieje
Jak to zrobić:
Standardowa biblioteka Rusta (std
) zawiera funkcjonalność umożliwiającą sprawdzenie istnienia katalogu za pomocą modułów std::path::Path
i std::fs
. Oto prosty przykład użycia standardowego podejścia w Rust:
use std::path::Path;
fn main() {
let path = Path::new("/ścieżka/do/katalogu");
if path.exists() && path.is_dir() {
println!("Katalog istnieje.");
} else {
println!("Katalog nie istnieje.");
}
}
Przykładowe wyjście, zakładając, że katalog istnieje:
Katalog istnieje.
W bardziej złożonych scenariuszach lub dla zaawansowanych funkcji (takich jak asynchroniczne operacje na systemie plików) możesz rozważyć użycie biblioteki zewnętrznej, takiej jak tokio
z jej asynchronicznym modułem fs
, szczególnie jeśli pracujesz w środowisku asynchronicznym. Oto jak można osiągnąć to samo z tokio
:
Najpierw dodaj tokio
do swojego Cargo.toml
:
[dependencies]
tokio = { version = "1.0", features = ["full"] }
Następnie użyj tokio::fs
, aby asynchronicznie sprawdzić, czy katalog istnieje:
use tokio::fs;
#[tokio::main]
async fn main() {
let path = "/ścieżka/do/katalogu";
match fs::metadata(path).await {
Ok(metadata) => {
if metadata.is_dir() {
println!("Katalog istnieje.");
} else {
println!("Ścieżka istnieje, ale nie jest katalogiem.");
}
},
Err(_) => println!("Katalog nie istnieje."),
}
}
Przykładowe wyjście, zakładając, że katalog nie istnieje:
Katalog nie istnieje.
Te przykłady podkreślają, jak Rust i jego ekosystem oferują zarówno synchroniczne, jak i asynchroniczne podejścia do sprawdzania istnienia katalogów, odpowiadając na szeroki zakres potrzeb rozwoju oprogramowania.