• 路径 Path

    路径 Path

    Path 结构体代表了底层文件系统的文件路径。Path 分为两种:posix::Path,针对类 UNIX 系统;以及 windows::Path,针对 Windows。预处理会导入适合特定平台的 Path 变量(原文:The prelude exports the appropriate platform-specific Path variant.)。

    Path 可从多种类型创建,几乎所有实现了 BytesContainer trait 的类型都可以,比如 string,并提供了几种方法从路径指向的文件/目录中获取信息。(原文:A Path can be created from almost any type that implements the BytesContainer trait, like a string, and provides several methods to get information from the file/directory the path points to.)

    注意 Path 在内部并没有表示为一个 UTF-8 字符串,而是存储为若干字节(Vec<u8>)的 vector。因此,将 Path 转化成 &str 并非零开销(free),且可能失败(返回一个 Option)。

    1. use std::path::Path;
    2. fn main() {
    3. // 从 `&'static str` 创建一个 `Path`
    4. let path = Path::new(".");
    5. // `display` 方法返回一个可显示(showable)的结构体
    6. let display = path.display();
    7. // `join` 使用操作系统的特定分隔符来合并路径,并返回新的路径
    8. let new_path = path.join("a").join("b");
    9. // 将路径转换成一个字符串 slice
    10. match new_path.to_str() {
    11. None => panic!("new path is not a valid UTF-8 sequence"),
    12. Some(s) => println!("new path is {}", s),
    13. }
    14. }

    要记得查阅其他的 Path 方法(posix::Pathwindows::Path),还有 FileStat 结构体。