ファイルパス
構造体Path
は、ファイルシステム中のパスを表します。Path
には2つの変種があります。UNIXライクなファイルシステムのためのposix::Path
と、Windows用のwindows::Path
です。それぞれプラットフォームに対応したPath
をエクスポートします。
Path
はOsStr
から作ることができます。そうすればそのパスが指すファイル・ディレクトリの情報を取得するためのメソッドがいくつか使えるようになります。
A Path
is immutable. The owned version of Path
is PathBuf
. The relation between Path
and PathBuf
is similar to that of str
and String
: a PathBuf
can be mutated in-place, and can be dereferenced to a Path
.
Note that a Path
is not internally represented as an UTF-8 string, but instead is stored as an OsString
. Therefore, converting a Path
to a &str
is not free and may fail (an Option
is returned). However, a Path
can be freely converted to an OsString
or &OsStr
using into_os_string
and as_os_str
, respectively.
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!("new path is not a valid UTF-8 sequence"), Some(s) => println!("new path is {}", s), } }
他のPath
メソッド(posix::Path
とwindows::Path
)をチェックするのを忘れずに!それとMetadata
構造体も見ておくことをオススメします。