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
).