如何将文件夹添加到文件名前的路径?

How to add a folder to a path before the filename?

如何使用 PathPathBuf 将“C:\foo\bar.txt”更改为“C:\foo\baz\bar.txt”?

我想在文件名之前的路径中添加一个文件夹。

Path 类型支持多种操作和解构路径的方法,因此附加目录应该很简单。例如:

fn append_dir(p: &Path, d: &str) -> PathBuf {
    let dirs = p.parent().unwrap();
    dirs.join(d).join(p.file_name().unwrap())
}

我正在 Linux 上测试它,所以对我来说测试看起来像这样,但是在 Windows 上你应该可以使用 C:\... 就好了:

fn main() {
    let p = Path::new(r"/foo/bar.txt");
    assert_eq!(append_dir(&p, "baz"), Path::new(r"/foo/baz/bar.txt"));
}