当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Rust read_dir用法及代码示例


本文简要介绍rust语言中 Function std::fs::read_dir 的用法。

用法

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

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

迭代器将产生 io::Result<DirEntry> 的实例。最初构造迭代器后可能会遇到新错误。当前目录和父目录(通常是 ... )的条目将被跳过。

特定于平台的行为

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

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

错误

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

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

例子

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

// one possible implementation of walking a directory only visiting files
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(())
}
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>>()?;

    // The order in which `read_dir` returns entries is not guaranteed. If reproducible
    // ordering is required the entries should be explicitly sorted.

    entries.sort();

    // The entries have now been sorted by their path.

    Ok(())
}

相关用法


注:本文由纯净天空筛选整理自rust-lang.org大神的英文原创作品 Function std::fs::read_dir。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。