[Rust]相対パスを絶対パスに変換する

[Rust]相対パスを絶対パスに変換する

Rustでプログラミングをしていて、少し詰まったので。

広告

結論のコード 

let relative_path = Path::new("relative.txt");   //相対パス
let pwd = env::current_dir().unwrap();           //現在のディレクトリ
let absolute_path = pwd.join(relative_path);     //絶対パス

 これで、absolute_pathに絶対パスが入ります。

解説

絶対パスが、現在のディレクトリからのパスであることを利用します。
まず、コード2行目で現在のディレクトリを取得します。
あとはPathBufにはjoinメソッドがあるので、相対パスをくっつけるだけです。

注意点

なお絶対パスは求まりますが、cleanされたパスではありません。ですので、場合によってはcurrent/./relative.txtみたいになります。
これらをきれいなパスに直したい場合、ファイルが存在するはずであればPathBuf::canonicalizeメソッドを、そうでなければ他のクレートなどを使ってパスをクリーンにする必要があります。

広告

関連コンテンツと広告

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA