rabuf

crate Docs Rust Version Apache2/MIT licensed Test

The Buffer for random access file.

When you read and write a file, this read and write in Chunk units and reduce IO operation.

Features

Examples

Write, Seek, Read

```rust use rabuf::BufFile; use std::fs::OpenOptions; use std::io::{Read, Seek, SeekFrom, Write};

std::fs::createdirall("target/tmp").unwrap();

let path = "target/tmp/doctest1"; let bw = b"ABCEDFG\nhijklmn\n";

let f = OpenOptions::new().create(true) .read(true).write(true).open(path).unwrap(); let mut bf = BufFile::new("tes", f).unwrap(); bf.write_all(bw).unwrap();

bf.seek(SeekFrom::Start(0)).unwrap();

let mut br = vec![0u8; bw.len()]; bf.readexact(&mut br).unwrap(); asserteq!(&br, bw); ```

Write, Close, Open, Read

```rust use rabuf::BufFile; use std::fs::OpenOptions; use std::io::{Read, Seek, SeekFrom, Write};

std::fs::createdirall("target/tmp").unwrap(); let path = "target/tmp/doctest2";

let bw = b"abcdefg\nHIJKLMN\n"; { let f = OpenOptions::new().create(true) .read(true).write(true).open(path).unwrap(); let mut bf = BufFile::new("tes", f).unwrap(); bf.writeall(bw).unwrap(); } { let f = OpenOptions::new().create(true) .read(true).write(true).open(path).unwrap(); let mut bf = BufFile::new("tes", f).unwrap(); let mut br = vec![0u8; bw.len()]; bf.readexact(&mut br).unwrap(); assert_eq!(&br, bw); } ```

Changelogs

This crate's changelog here.

License

This project is licensed under either of

at your option.