Rust-高级-Crate之Walkdir

  1. 遍历目录
  2. 错误过滤
  3. 跳过文件或目录

一个跨平台的Rust库,用于高效地递归地遍历文件夹。

遍历目录

use walkdir::WalkDir;
use std::path::Path;

fn main() {
let dir = WalkDir::new(Path::new("src"));
for d in dir {
let entry = d.unwrap();
println!("{}", entry.path().display());

}
}

错误过滤

遍历所有条目并忽略可能出现的任何错误,请使用filter_map。将静默跳过正在运行的进程的所有者无权访问的目录。

use walkdir::WalkDir;
use std::path::Path;

fn main() {
let dir = WalkDir::new(Path::new("src"));
for d in dir.into_iter().filter_map(|e| e.ok()) {
println!("{}", d.path().display());
}
}

跳过文件或目录

use walkdir::WalkDir;
use std::path::Path;

fn main() {
let dir = WalkDir::new(Path::new("src"));

for c in dir.into_iter()
.filter_entry(|e| {
let x = e.file_name()
.to_str()
.map(|f| f.starts_with("."))
.unwrap_or(false);
x
}) {
let entry = c.unwrap();
println!("{}", entry.path().display());
}

}