### 駄目な例
ファイル名の”.”以降の値を取得する
let pos = file_name.find('.').unwrap(); let file_extension = &file_name[(pos+1)..].to_string();
これだと、img.test.png という画像ファイルだった場合、拡張子が test.png になってしまう。
一度、ファイルを保存して、use std::path::PathBuf; を使って、ちゃんと取得する。
let pathbuf = PathBuf::from(format!("./tmp/{}", file_name)); let ext_string = pathbuf .extension() .unwrap() .to_string_lossy() .into_owned(); println!("{}", ext_string); let ex_filename = format!("./tmp/{}", file_name); let new_filename = format!("./tmp/nft.{}", ext_string); fs::rename(ex_filename, new_filename).unwrap();
ファイル名に、”.”が入らないなんてのは勝手な思い込みだ。