我想从可执行文件所在目录的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
。我想追加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()
@TimonPost我添加了另一个版本,更一点点内存使用效率。 – Shepmaster