#directory #file #iterator #read-line

dir_lines_streamer

逐行读取目录内的文件,一个接一个(按人类字母顺序)

2个不稳定版本

0.2.0 2019年1月28日
0.1.0 2019年1月9日

#1038 in 文件系统

MIT/Apache

14KB
248

dir_lines_streamer

dir_lines_streamer是一个Rust crate,允许逐行读取目录内的文件,一个接一个(按人类字母顺序)。

# Cargo.toml
[dependencies]
dir_lines_streamer = "0.1"

示例

假设你有一个包含由logrotate分割的文件的目录,你想逐行读取

ls fixtures/non-empty-dir/
messages        messages.1      messages.10     messages.2      messages.20

注意字母顺序是如何将messages.10messages.2之前排序的。

此crate允许创建一个结构体,该结构体实现了返回文件行的Iterator<Item = String>特质。

use failure; // Crate failure 0.1
use dir_lines_streamer::DirectoryLinesStreamer;

let streamer_result: Result<DirectoryLinesStreamer, failure::Error> = DirectoryLinesStreamer::from_dir("fixtures/non-empty-dir");

// Read all lines of all files inside the directory and store them in a Vec<String>
let lines: Vec<String> = streamer.collect();

println!("lines: {:#?}", lines);

这将打印

lines: [
    "line one from messages\n",
    "line two from messages\n",
    "line three from messages\n",
    "line one from messages.1\n",
    "line two from messages.1\n",
    "line three from messages.1\n",
    "line one from messages.2\n",
    "line two from messages.2\n",
    "line three from messages.2\n",
    "line one from messages.10\n",
    "line two from messages.10\n",
    "line three from messages.10\n",
    "line one from messages.20\n",
    "line two from messages.20\n",
    "line three from messages.20\n"
]

许可证

许可协议为以下之一

任选其一。

版权所有 (c) Element AI Inc.,2018,Nicolas Bigaouette。保留所有权利。

贡献

除非你明确说明,否则根据Apache-2.0许可证定义的,你有意提交给作品包括在内的任何贡献,都将按上述方式双许可,不附加任何额外的条款或条件。

依赖关系

~135–270KB