我设法读取从一个路径到 a 的所有文件Vec,现在我想按扩展名进行过滤。
let path = Path::new(r"C:\Testpath");
let mut faxvec: Vec<String> = Vec::new();
for element in path.read_dir().unwrap() {
// if match element
faxvec.push(element);
}
Run Code Online (Sandbox Code Playgroud)
我只想将文件推送到以“.txt”结尾的向量
我参加聚会有点晚了,但我觉得这更符合习惯:
fn get_csv_paths(dir: &str) -> Result<Vec<PathBuf>, Box<dyn Error>> {
let paths = std::fs::read_dir(dir)?
// Filter out all those directory entries which couldn't be read
.filter_map(|res| res.ok())
// Map the directory entries to paths
.map(|dir_entry| dir_entry.path())
// Filter out all paths with extensions other than `csv`
.filter_map(|path| {
if path.extension().map_or(false, |ext| ext == "csv") {
Some(path)
} else {
None
}
})
.collect::<Vec<_>>();
Ok(paths)
}
Run Code Online (Sandbox Code Playgroud)
如果Err读取目录出现问题,它将获取所有以csv.
也许您正在寻找类似以下内容的东西:
fn main() {
let mut faxvec: Vec<std::path::PathBuf> = Vec::new();
for element in std::path::Path::new(r"C:\Testpath").read_dir().unwrap() {
let path = element.unwrap().path();
if let Some(extension) = path.extension() {
if extension == "txt" {
faxvec.push(path);
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4210 次 |
| 最近记录: |