#跨平台 #稀疏 #操作 #列出 #扫描 # #孔洞

bin+lib drill-press

一个用于列出和操作稀疏文件中孔洞的跨平台库

2 个版本

0.1.1 2022年9月16日
0.1.0 2022年2月16日

#482 in 操作系统

MIT/Apache

26KB
518

孔洞打击

Crates.io License Unsafe Maintenance

一个简单的跨平台crate,用于查找稀疏文件中的孔洞位置。

从 Nathan McCarty 的 hole_punch (git) 分支而来

目前支持支持 SEEK_HOLESEEK_DATA 命令的 Unix-like 平台上的 lseek,以及 Windows。

目前支持文件系统级稀疏信息的操作系统包括

  1. Linux
  2. Android
  3. FreeBSD
  4. Windows
  5. 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