#file-line #line #indexed #file #reader

indexed-line-reader

允许将文件定位到特定行

3个不稳定版本

使用旧的Rust 2015

0.2.1 2019年2月26日
0.2.0 2016年4月2日
0.1.0 2016年3月15日

#21 in #indexed

30 每月下载量
7 个crate中(2直接) 使用

MIT 许可证

13KB
234

indexed-line-reader

一个Rust库,用于将文件定位到特定行

Crates.io

文档


lib.rs:

索引行读取器

IndexedLineReader 实现了 Seek trait,允许定位到特定行

索引粒度

IndexedLineReadern 行存储一个字节数,以允许快速按行定位。可以通过将值传递给 IndexedLineReader 构造函数来配置粒度。

在索引占用的内存和定位速度之间有一个权衡,一般来说,较低的粒度意味着更多的行被索引和更高的内存消耗,但较快的定位时间,而较高的粒度会减慢定位时间,但内存中保留的索引较少。

例如,如果一个文件有1亿行,通常100,000的粒度在性能和内存消耗之间提供了一个良好的权衡。

示例

extern crate indexed_line_reader;

use indexed_line_reader::*;
use std::fs::*;
use std::io::{BufRead, BufReader, Seek, SeekFrom, Write};

/* Creates an IndexedLineReader for a file with index granularity of 100 */
let file_reader = OpenOptions::new().read(true).open("file.txt").expect("Unable to open file reader");
let mut indexed_line_reader = &mut IndexedLineReader::new(BufReader::new(file_reader), 100);

/* Seeks to line 100 from the start of the file */
indexed_line_reader.seek(SeekFrom::Start(100));

/* Seeks forward by 50 lines from the current position on the file */
indexed_line_reader.seek(SeekFrom::Current(50));

/* Seeks backward by 50 lines from the current position on the file */
indexed_line_reader.seek(SeekFrom::Current(-50));

/* Seeks to the 100th line from the end on the file */
indexed_line_reader.seek(SeekFrom::End(100));

无运行时依赖