我可以显示如下目录列表:
use std::fs;
fn main() {
let paths = fs::read_dir("./").unwrap();
for path in paths {
println!("Name: {}", path.unwrap().path().display())
}
}
Run Code Online (Sandbox Code Playgroud)
我可以在ReadDir
迭代之前对迭代器进行排序吗?目录名称是类似日期的数字201610131503
.我阅读了文档,ReadDir
但是没有找到内置函数.也许我不知道如何搜索?
Chr*_*son 10
ReadDir
只能一次读取一个条目,因此在迭代之前无法对其进行排序.没有排序的readdir
系统调用(至少在我知道的平台上没有,这意味着没有可移植的系统调用).
所以唯一的选择是读入Vec
并排序:
use std::fs;
fn main() {
let mut paths: Vec<_> = fs::read_dir("/").unwrap()
.map(|r| r.unwrap())
.collect();
paths.sort_by_key(|dir| dir.path());
for path in paths {
println!("Name: {}", path.path().display())
}
}
Run Code Online (Sandbox Code Playgroud)
我可以在
ReadDir
迭代之前对迭代器进行排序吗?
基本上没有.在macOS和Linux上,使用该readdir_r
功能.这不保证以任何特定顺序返回.一般情况下,它会在最快的顺序返回/最简单的文件系统,它可以改变你每次调用它.
您需要收集项目,对它们进行排序,然后重新进行迭代.
归档时间: |
|
查看次数: |
1244 次 |
最近记录: |