2 个版本
0.1.1 | 2022年9月16日 |
---|---|
0.1.0 | 2022年2月16日 |
#482 in 操作系统
26KB
518 行
孔洞打击
一个简单的跨平台crate,用于查找稀疏文件中的孔洞位置。
从 Nathan McCarty 的 hole_punch (git) 分支而来
目前支持支持 SEEK_HOLE
和 SEEK_DATA
命令的 Unix-like 平台上的 lseek
,以及 Windows。
目前支持文件系统级稀疏信息的操作系统包括
- Linux
- Android
- FreeBSD
- Windows
- MacOS
这些目前是通过编译时开关实现的,且 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 segments {
if SegmentType::Data == segment.segment_type {
let start = segment.start();
let length = segment.len();
do_something_with_data(&mut file, start, length);
}
}
许可证
Hole-Punch 在 MIT 许可证或 Apache 2.0 许可证下分发。
依赖项
~0.3–1MB
~20K SLoC