路径
Path
结构体表示底层文件系统中的文件路径。Path
有两种风格:posix::Path
用于类 UNIX 系统,windows::Path
用于 Windows。前奏会导出适合平台的 Path
变体。
可以从 OsStr
创建 Path
,并提供多种方法来获取路径指向的文件/目录的信息。
Path
是不可变的。Path
的所有权版本是 PathBuf
。Path
和 PathBuf
之间的关系类似于 str
和 String
:PathBuf
可以原地修改,并且可以解引用为 Path
。
请注意,Path
在内部表示中并非 UTF-8 字符串,而是存储为 OsString
。因此,将 Path
转换为 &str
并非 没有开销,并且可能会失败(返回一个 Option
)。但是,可以使用 into_os_string
和 as_os_str
将 Path
自由转换为 OsString
或 &OsStr
。
use std::path::Path; fn main() { // Create a `Path` from an `&'static str` let path = Path::new("."); // The `display` method returns a `Display`able structure let _display = path.display(); // `join` merges a path with a byte container using the OS specific // separator, and returns a `PathBuf` let mut new_path = path.join("a").join("b"); // `push` extends the `PathBuf` with a `&Path` new_path.push("c"); new_path.push("myfile.tar.gz"); // `set_file_name` updates the file name of the `PathBuf` new_path.set_file_name("package.tgz"); // Convert the `PathBuf` into a string slice match new_path.to_str() { None => panic!("new path is not a valid UTF-8 sequence"), Some(s) => println!("new path is {}", s), } }
请务必查看其他 Path
方法(posix::Path
或 windows::Path
)和 Metadata
结构体。