#跨平台 #稀疏矩阵 #信息 #扫描 #查找 # #支持

bin+lib hole-punch

一个正在开发中的跨平台库,用于提取稀疏文件中孔洞的信息

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

MIT/Apache

35KB
623

Hole-Punch

Crates.io License Unsafe Maintenance

一个(wip)简单易用的跨平台包,用于查找稀疏文件中的孔洞位置。

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

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

  1. Linux
  2. Android
  3. FreeBSD
  4. 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 许可证分发。

待办事项

以下功能在我“待实现”列表中,按重要性排序

  1. Windows 支持
  2. 回退模式(手动读取整个文件以查找 0 块)

依赖项

~0.3–1MB
~20K SLoC