Function std::fs::read_dir1.0.0[][src]

pub fn read_dir<P: AsRef<Path>>(path: P) -> Result<ReadDir>
Expand description

返回目录中条目的迭代器。

迭代器将产生 io::Result<DirEntry> 的实例。 最初构造迭代器后,可能会遇到新的错误。

平台特定的行为

该函数当前对应于 Unix 上的 opendir 函数和 Windows 上的 FindFirstFile 函数。 推进迭代器当前对应于 Unix 上的 readdir 和 Windows 上的 FindNextFile。 注意,这个 may change in the future

该迭代器返回条目的顺序取决于平台和文件系统。

Errors

在以下情况下,此函数将返回错误,但不仅限于这些情况:

  • 提供的 path 不存在。
  • 该进程没有查看内容的权限。
  • path 指向非目录文件。

Examples

use std::io;
use std::fs::{self, DirEntry};
use std::path::Path;

// 一种只访问文件的目录的可能实现
fn visit_dirs(dir: &Path, cb: &dyn Fn(&DirEntry)) -> io::Result<()> {
    if dir.is_dir() {
        for entry in fs::read_dir(dir)? {
            let entry = entry?;
            let path = entry.path();
            if path.is_dir() {
                visit_dirs(&path, cb)?;
            } else {
                cb(&entry);
            }
        }
    }
    Ok(())
}
Run
use std::{fs, io};

fn main() -> io::Result<()> {
    let mut entries = fs::read_dir(".")?
        .map(|res| res.map(|e| e.path()))
        .collect::<Result<Vec<_>, io::Error>>()?;

    // 不保证 `read_dir` 返回条目的顺序。
    // 如果需要可重复的排序,则应对条目进行显式排序。

    entries.sort();

    // 现在,条目已按其路径排序。

    Ok(())
}
Run