6 个版本
0.2.4 | 2023 年 5 月 22 日 |
---|---|
0.2.3 | 2023 年 5 月 9 日 |
0.1.2 | 2021 年 2 月 24 日 |
0.1.1 | 2020 年 12 月 6 日 |
#302 在 文件系统
1,319 每月下载量
在 3 crates 中使用
26KB
478 行
BufReaderWriter
BufReaderWriterRand<RW>
和 BufReaderWriterSeq<RW>
是便利的结构体,用于在单个底层 IO 实例之间自动切换缓冲读取和写入。 BufReaderWriterRand
用于随机访问 IO(即 Read + Write + Seek,例如 std::fs::File
),而 BufReaderWriterSeq
用于顺序 IO(即 Read + Write,例如 std::net::TcpStream
)。
这两个结构体根据需要将底层 IO 实例在 BufReader 和 BufWriter 之间移动。然而,当从读取切换到写入时,BufReaderWriterRand
会丢弃任何缓冲数据,并将底层 IO 实例回溯到当前的 BufReader 位置,而 BufReaderWriterSeq
会保存任何缓冲数据,并在后续读取中使其可用。
链接
lib.rs
:
BufReaderWriterRand<RW>
和 BufReaderWriterSeq<RW>
是便利的结构体,用于在单个底层 IO 实例之间自动切换缓冲读取和写入。 BufReaderWriterRand
用于随机访问 IO(即 Read + Write + Seek,例如 std::fs::File
),而 BufReaderWriterSeq
用于顺序 IO(即 Read + Write,例如 std::net::TcpStream
)。
这两个结构体根据需要将底层 IO 实例在 BufReader 和 BufWriter 之间移动。然而,当从读取切换到写入时,BufReaderWriterRand
会丢弃任何缓冲数据,并将底层 IO 实例回溯到当前的 BufReader 位置,而 BufReaderWriterSeq
会保存任何缓冲数据,并在后续读取中使其可用。
示例
use bufreaderwriter::rand::BufReaderWriterRand;
use tempfile::tempfile;
fn main() -> io::Result<()> {
let mut brw = BufReaderWriterRand::new_writer(tempfile()?);
let data = "The quick brown fox jumps over the lazy dog".to_owned();
brw.write(data.as_bytes())?;
brw.seek(SeekFrom::Start(0))?;
let mut bin = vec![0; data.len()];
brw.read(&mut bin)?;
Ok(())
}