🌊

【Rust】 ディレクトリの中のファイル名を絶対パスで。

2023/05/12に公開

read_dirでentries を取得後に canonicalize を使用するとよいとのこと。

use std::fs::{read_dir, canonicalize};

fn read_file_in_dir(){
	let dir = "./src";
	let entries = read_dir(dir).unwrap();

	for entry in entries {
	    if let Ok(entry) = entry {
	        let path = entry.path();
	        println!("file_name = {:?}", entry.file_name());
	        println!("is_absolute = {}", path.is_absolute());
	        let abs_path = canonicalize(&path).unwrap(); // ここで絶対パスを入手
		let filename = abs_path.into_os_string().into_string().unwrap(); // String に変換
	        println!("filename = {}", filename);
	    }
	}
}

fn main() {
	read_file_in_dir();
}

Discussion