4 个版本
0.0.3 | 2020 年 3 月 12 日 |
---|---|
0.0.2 | 2020 年 3 月 9 日 |
0.0.1 | 2020 年 3 月 5 日 |
0.0.0 | 2020 年 3 月 4 日 |
#586 在 操作系统
每月 29 次下载
用于 acid-store
35KB
623 行
Hole-Punch
一个(wip)简单易用的跨平台包,用于查找稀疏文件中的孔洞位置。
目前支持支持 SEEK_HOLE
和 SEEK_DATA
命令的 Unix-like 平台上的 lseek
,以及 Windows。
目前支持文件系统级别稀疏信息的操作系统有
- Linux
- Android
- FreeBSD
- Windows
这些目前通过编译时开关实现,且在不在该列表的平台上的 SparseFile::scan_chunks
将始终立即返回 ScanError::UnsupportedPlatform
错误。
用法
use std::fs::File;
use hole_punch::*;
let mut file = File::open("a big sparse file");
let segments = file.scan_chunks().expect("Unable to scan chunks");
for segment in segment {
if let SegmentType::Data = segment.segment_type {
let start = segment.start;
let end = segment.end;
let length = end - start;
do_something_with_data(&mut file, start, length);
}
}
许可
Hole-Punch 采用您选择的 MIT 许可证或 Apache 2.0 许可证分发。
待办事项
以下功能在我“待实现”列表中,按重要性排序
- Windows 支持
- 回退模式(手动读取整个文件以查找 0 块)
依赖项
~0.3–1MB
~20K SLoC