18.3 Path

Path 구조체는 파일시스템에 하부로 파일 경로를 표현한다. 여기에는 두 가지 Path: posix::Path는 UNIX-계통 시스템을, window::Path는 Windows를, 종류가 있다. 도입부에 플랫폼에 적합한 Path 형태를 export한다.

Path는 어떤 타입에서든 만들어질 수 있게끔 BytesContainer trait를 구현했고, 이는 string과 유사하며, 제공되는 몇개의 메소드는 파일/디렉토리 정보를 path로부터 얻을 수 있게 한다.

주의할 점은 Path는 국제적 표현체인 UTF-8 string이 아니다, 하지만 대신 바이트 벡터(Vec<u8>)로 저장된다. 그래서 Path&str로 변환하는 것은 원하는 대로 되지 않고 실패를 하게 될 것이다(Option이 반환된다).

use std::path::Path;

fn main() {
    // `&'static str`로 `Path` 를 만들기
    // Create a `Path` from an `&'static str`
    let path = Path::new(".");

    // `display` 메소드는 `출력`가능한 구조체를 반환한다.
    let display = path.display();

    // `join`은 byte container로 path를 병합하며 OS에 지정된 구분자를 사용한다. 
    // 그리고 새로운 path를 반환한다. 
    let new_path = path.join("a").join("b");

    // path를 string 조각으로 변환한다.
    match new_path.to_str() {
        None => panic!("new path is not a valid UTF-8 sequence"),
        Some(s) => println!("new path is {}", s),
    }
}

다른 Path 메소드와 FileStat 구조체를 꼭 검토해보라(posix::Path 혹은 windows::Path).

results matching ""

    No results matching ""