28 个版本 (5 个破坏性版本)
0.6.2 | 2024 年 7 月 17 日 |
---|---|
0.6.1 | 2024 年 7 月 17 日 |
0.5.2 | 2024 年 7 月 17 日 |
0.4.5 | 2024 年 7 月 10 日 |
0.1.5 | 2023 年 12 月 23 日 |
#337 在 Rust 模式 中
每月 906 次下载
48KB
685 代码行
file_rw
file_rw
是一个 Rust crate,用于高性能、内存映射文件 I/O 工具。
特性
- 高性能的文件读写能力
- 内存映射文件,用于高效访问和操作
- 文件内容常见操作的 高级、高效抽象
安装
您可以通过以下方式将 crate 包含到您的 Rust 项目中:
- 将以下内容添加到您的
Cargo.toml
文件中
[dependencies]
file_rw = "0.6.2"
- 运行以下 Cargo 命令来自动完成此操作
cargo add file_rw
模块
file
:文件操作read
:文件读取能力write
:文件写入能力
重导出
该 crate 重导出 FileReader
和 FileWriter
结构体以供外部使用。这些结构体包含上述工具。
示例
以下是从 FileReader
和 FileWriter
结构体中使用方法的示例。示例根据运行它们所需的 crate 功能进行分类。
简单的读写
use file_rw::{FileReader, FileWriter};
use tempfile::tempdir;
let tempdir = tempdir().unwrap();
let tempdir_path = tempdir.path();
let test_path = tempdir_path.join("test.txt");
let mut writer = FileWriter::open(&test_path).unwrap();
writer.append("Hello World!");
assert_eq!(writer.bytes(), b"Hello World!");
writer.overwrite("Hello");
assert_eq!(writer.bytes(), b"Hello");
writer.write("Hullo");
assert_eq!(writer.bytes(), b"Hullo");
搜索和替换
使用 search
功能启用搜索和替换功能。
use file_rw::{FileReader, FileWriter};
use tempfile::tempdir;
let tempdir = tempdir().unwrap();
let tempdir_path = tempdir.path();
let test_path = tempdir_path.join("test.txt");
let mut writer = FileWriter::open(&test_path).unwrap();
writer.overwrite("Hullo");
#[cfg(feature = "search")]
{
writer.find_replace_nth("l", "y", 0).unwrap();
assert_eq!(writer.bytes(), b"Huylo");
writer.find_replace("u", "e").unwrap();
assert_eq!(writer.bytes(), b"Heylo");
writer.find_replace("lo", "yyy").unwrap();
assert_eq!(writer.bytes(), b"Heyyyy");
writer.find_replace_all("y", "i").unwrap();
assert_eq!(writer.bytes(), b"Heiiii");
writer.find_replace("e", "i").unwrap();
assert_eq!(writer.bytes(), b"Hiiiii");
let reader = writer.as_reader().unwrap();
let content = reader.read_to_string();
assert_eq!(content, "Hiiiii");
}
哈希
使用 hash
功能启用哈希功能 - 这些方法需要提供一个 Digest
来进行哈希。
use file_rw::{FileReader, FileWriter};
use tempfile::tempdir;
let tempdir = tempdir().unwrap();
let tempdir_path = tempdir.path();
let test_path = tempdir_path.join("test.txt");
let mut writer = FileWriter::open(&test_path).unwrap();
writer.overwrite("Hello World!");
let reader = writer.as_reader().unwrap();
#[cfg(feature = "hash")]
{
assert_eq!(reader.hash_to_string_with::<sha3::Sha3_256>(), "d0e47486bbf4c16acac26f8b653592973c1362909f90262877089f9c8a4536af");
use sha3::Digest;
let mut sha3_direct_hasher = sha3::Sha3_256::new();
sha3_direct_hasher.update(b"Hello World!");
assert_eq!(reader.hash_with::<sha3::Sha3_256>(), sha3_direct_hasher.finalize());
}
SHA3_256 哈希
使用 sha3_256
功能启用 SHA3_256 哈希功能 - 这也启用了 hash
功能,但提供了方便的方法,无需手动提供 Digest
。
use file_rw::{FileReader, FileWriter};
use tempfile::tempdir;
let tempdir = tempdir().unwrap();
let tempdir_path = tempdir.path();
let test_path = tempdir_path.join("test.txt");
let mut writer = FileWriter::open(&test_path).unwrap();
writer.overwrite("Hello World!");
let reader = writer.as_reader().unwrap();
#[cfg(feature = "sha3_256")]
{
assert_eq!(reader.hash_to_string(), "d0e47486bbf4c16acac26f8b653592973c1362909f90262877089f9c8a4536af");
use sha3::Digest;
let mut sha3_direct_hasher = sha3::Sha3_256::new();
sha3_direct_hasher.update(b"Hello World!");
assert_eq!(reader.hash(), sha3_direct_hasher.finalize());
}
依赖
~130–720KB