#ndjson #zst #file #newline #data #json

ndjson_zst

简单的nsjson zst读写器

2个不稳定版本

0.2.0 2024年5月16日
0.1.0 2024年5月15日

#205 in 压缩

每月 39 次下载

MIT 许可证

7KB
92

NdjsonZst

NdjsonZst是一个Rust库,用于编写和读取使用Zstandard (zstd)压缩的换行分隔JSON (NDJSON)文件。此库提供了两个主要结构:NdjsonZstWriterNdjsonZstReader,使您能够高效地处理带压缩的NDJSON文件。

特性

  • 使用Zstandard压缩写入NDJSON:使用 NdjsonZstWriter 将NDJSON数据写入压缩文件。
  • 从压缩文件读取NDJSON:使用 NdjsonZstReader 从压缩文件读取NDJSON数据。
  • 可选移除行NdjsonZstWriter 允许在写入数据的同时移除输入字符串中的换行 (\n) 和回车 (\r) 字符。

用法

添加依赖项

要使用NdjsonZst,请将以下依赖项添加到您的 Cargo.toml

[dependencies]
ndjson_zst = "0.1.0"

示例

写入NDJSON数据

use std::fs::File;
use ndjson_zst::NdjsonZstWriter;

fn main() {
    let file_path = "data.zst";
    let mut writer = NdjsonZstWriter::from(file_path);

    writer.write(r#"{"name": "Alice", "age": 30}"#);
    writer.write_with_remove_line("Line with\nnewlines\n");
}

读取NDJSON数据

use ndjson_zst::NdjsonZstReader;

fn main() {
    let file_path = "data.zst";
    let reader = NdjsonZstReader::from(file_path);

    for line in reader.lines() {
        println!("{}", line);
    }
}

API文档

NdjsonZstWriter

from(value: &str) -> Self

从文件路径创建一个新的 NdjsonZstWriter 实例。

new(f:File) -> Self

File 创建一个新的 NdjsonZstWriter 实例。

write(&mut self,data: &str)

将一个字符串写入NDJSON文件,后跟一个换行符。

write_with_remove_line(&mut self,data: &str)

在移除所有换行 (\n) 和回车 (\r) 字符后,将一个字符串写入NDJSON文件,后跟一个换行符。

NdjsonZstReader

from(value: &str) -> Self

从文件路径创建一个新的 NdjsonZstReader 实例。

new(f:File) -> Self

File 创建一个新的 NdjsonZstReader 实例。

lines(&self) -> std::str::Lines

返回NDJSON文件行的迭代器。

许可证

本项目采用MIT许可证。

贡献

欢迎贡献!请随时提交拉取请求或打开一个问题,如果您有任何建议或改进。

鸣谢

  • zstd-rs 为Rust提供了Zstandard绑定。

备注

  • 当前 NdjsonZstReader 的实现会将整个文件读入内存。未来的改进可能包括支持流式读取,以高效地处理大文件。

本README文件提供了NdjsonZst库的基本概述和示例用法。如需更多详细信息,请参考源代码和内联文档。

依赖关系

约3MB
约51K SLoC