我想从可执行文件所在的目录下的一个名为 config 的文件夹中读取文件。我使用以下函数来实现:
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()
}
在我的情况下,get_exe_path()
将返回 C:\Users\User\Documents\Rust\Hangman\target\debug\Hangman.exe
。使用
get_file_path("Config\test.txt")
,我想将 Config\test.txt
追加到上面的路径中。然后我得到了以下文件路径:C:\Users\User\Documents\Rust\Hangman\target\debug\Hangman.exe\Config\test.txt
问题在于,std::env::current_exe()
还会获取可执行文件的文件名,而我不需要那个。我只需要它所在的目录。问题:以下函数调用应该返回
C:\Users\User\Documents\Rust\Hangman\target\debug\Config\test.txt
:let path = get_file_path("Config\\test.txt");
如何获取当前目录的路径,而不包括上述示例中的可执行文件名?除了使用std::env::current_exe()
之外,还有其他方法吗?
我该怎么做才能获得所需结果?