當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。