A simple, cross platform crate for finding the locations of holes in sparse files.
Forked from Nathan McCarty's hole_punch (git)
Currently supports Unix-like platforms that support the SEEK_HOLE
and SEEK_DATA
commands on lseek
, as well as windows.
The operating systems that currently support filesystem-level sparsity information are:
These are currently implemented with a compile time switch, and SparseFile::scan_chunks
will always immediately return with a ScanError::UnsupportedPlatform
error on platforms not on this list.
```rust use std::fs::File; use hole_punch::*;
let mut file = File::open("a big sparse file"); let segments = file.scanchunks().expect("Unable to scan chunks"); for segment in segments { if SegmentType::Data == segment.segmenttype { let start = segment.start(); let length = segment.len(); dosomethingwith_data(&mut file, start, length); } } ```
Hole-Punch is distributed under your choice of the MIT license, or Apache 2.0.