Je souhaite lire les fichiers d'un dossier de configuration dans le répertoire où se trouve l'exécutable. Je le fais en utilisant les fonctions suivantes:Comment obtenir uniquement la partie répertoire du chemin de l'exécutable actuel?
use std::env;
// add part of path to te path gotten from fn get_exe_path();
fn get_file_path(path_to_file: &str) -> PathBuf {
let final_path = match get_exe_path() {
Ok(mut path) => {
path.push(path_to_file);
path
}
Err(err) => panic!("Path does not exists"),
};
final_path
}
// Get path to current executable
fn get_exe_path() -> Result<PathBuf, io::Error> {
//std::env::current_exe()
env::current_exe()
}
Dans mon cas, get_exe_path()
retournera C:\Users\User\Documents\Rust\Hangman\target\debug\Hangman.exe
. Avec get_file_path("Config\test.txt")
, je souhaite ajouter Config\test.txt
au chemin ci-dessus. Ensuite, je reçois le chemin d'accès suivant au fichier: C:\Users\User\Documents\Rust\Hangman\target\debug\Hangman.exe\Config\test.txt
Le problème est que std::env::current_exe()
obtiendra également le nom de fichier de l'exécutable et je n'ai pas besoin de cela. J'ai seulement besoin du répertoire où il se trouve.
Question
qui suit l'appel de fonction suivante doit retourner C:\Users\User\Documents\Rust\Hangman\target\debug\Config\test.txt
:
let path = get_file_path("Config\\test.txt");
Comment puis-je obtenir le chemin du répertoire courant sans le nom de l'exécutable comme exemple ci-dessus? Y at-il d'autres façons de le faire que d'utiliser std::env::current_exe()
@TimonPost J'ai ajouté une autre version qui est un petit peu plus efficace mémoire. – Shepmaster