경로
Path 타입은 기저 파일 시스템의 파일 경로를 나타냅니다. 모든 플랫폼에 걸쳐 플랫폼별 경로 의미론과 구분자를 추상화하는 단일 std::path::Path가 존재합니다. 필요할 때 use std::path::Path;를 사용하여 스코프로 가져오세요.
Path는 OsStr로부터 생성될 수 있으며, 경로가 가리키는 파일/디렉터리로부터 정보를 얻기 위한 여러 메서드를 제공합니다.
Path는 불변(immutable)입니다. Path의 소유형(owned) 버전은 PathBuf입니다. Path와 PathBuf의 관계는 str과 String의 관계와 유사합니다. PathBuf는 그 자리에서 수정될 수 있으며, Path로 역참조(dereference)될 수 있습니다.
Path는 내부적으로 UTF-8 문자열로 표현되지 않고, 대신 OsString으로 저장됩니다. 따라서 Path를 &str로 변환하는 것은 비용이 들며 실패할 수도 있습니다(Option이 반환됩니다). 하지만 Path는 각각 into_os_string과 as_os_str을 사용하여 OsString이나 &OsStr로 자유롭게 변환될 수 있습니다.
use std::path::Path;
fn main() {
// &'static str로부터 Path를 생성합니다
let path = Path::new(".");
// `display` 메서드는 `Display` 가능한 구조체를 반환합니다
let _display = path.display();
// `join`은 OS 전용 구분자를 사용하여 경로를 바이트 컨테이너와 병합하고, `PathBuf`를 반환합니다.
let mut new_path = path.join("a").join("b");
// `push`는 `PathBuf`를 `&Path`로 확장합니다
new_path.push("c");
new_path.push("myfile.tar.gz");
// `set_file_name`은 `PathBuf`의 파일 이름을 업데이트합니다
new_path.set_file_name("package.tgz");
// `PathBuf`를 문자열 슬라이스로 변환합니다
match new_path.to_str() {
None => panic!("새 경로가 유효한 UTF-8 시퀀스가 아닙니다"),
Some(s) => println!("새 경로는 {}입니다", s),
}
}
다른 Path 메서드들과 Metadata 구조체도 반드시 확인해 보세요.