如何检查目录是否存在并创建一个新目录,如果它不在Rust中?

tve*_*eeg 6 directory rust

我尝试了以下但我不认为它特别漂亮:

let path = "target/dir";
if !std::path::Path::new(&path).exists() {
    std::fs::create_dir(path)?;
}
Run Code Online (Sandbox Code Playgroud)

She*_*ter 8

std::fs::create_dir_all:

递归创建目录及其所有父组件(如果缺少).

例子

use std::fs;

fs::create_dir_all("/some/dir")?;
Run Code Online (Sandbox Code Playgroud)

  • 有什么惯用的方式来表达“将此文本写入此文件,根据需要创建任何祖先目录?” 我最好的 atm 是: `fs::create_dir_all(file_path.clone().parent().unwrap())?; fs::write(文件路径,文件内容)?;` (9认同)
  • @Venryx这就是我要做的,但避免克隆和解包: `if let Some(p) = file_path.parent() { fs::create_dir_all(p)? }; fs::write(文件路径,文件内容)?;` (5认同)
  • 您需要在返回 `Result<(), std::Error>` 的函数中运行它,或者将 `?` 更改为 `.expect("Failed to create")` (2认同)