gpt4 book ai didi

rust - 将当前目录中的所有文件内容读取到向量

转载 作者:行者123 更新时间:2023-12-03 11:45:27 27 4
gpt4 key购买 nike

我想读取当前目录中的所有文件。

这是我的进度:

use std::fs;

fn main() {
let files = fs::read_dir(".").unwrap();
files
.filter_map(Result::ok)
.filter(|d| if let Some(e) = d.path().extension() { e == "txt" } else {false})
.for_each(|f| println!("{:?}", f));
}

在这里我有点迷路,如何读取所有文件内容?我应该将它们添加到 Vec块中不断增长的 for_each中吗?如果是这样,那怎么办?

最佳答案

如果您想将一个vec包含所有文件字节,则可以使用

let target_ext = OsString::from("txt");
let files = fs::read_dir(".").unwrap();
let file_bytes : Vec<u8> = files
.filter_map(Result::ok)
.map(|d| d.path())
.filter(|path| path.extension() == Some(&target_ext))
.flat_map(|path| fs::read(path).expect("Failed to read"))
.collect();

如果您想要一个vec分别包含每个文件的内容,请将 flat_map更改为 map,它将返回一个 Vec<Vec<u8>>
let file_bytes : Vec<Vec<u8>> = files
.filter_map(Result::ok)
.map(|d| d.path())
.filter(|path| path.extension() == Some(&target_ext))
.map(|path| fs::read(path).expect("Failed to read"))
.collect();

关于rust - 将当前目录中的所有文件内容读取到向量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62161623/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com