为什么 Rust 的 read_to_end 不将文件读入缓冲区?

2023-12-07

代码(根据我的实际问题改编)非常简单,但我无法弄清楚我缺少什么。它将正确写入文件。但它的输出是Buffer: [],由于某种原因没有从文件中读取任何内容。它是什么?

use std::io::{Read, Write};

fn main() {
    let mut test_file = std::fs::OpenOptions::new()
        .read(true)
        .write(true)
        .open("testfile.txt")
        .expect("Creating file failed");
    let test_str = String::from("This is only a test!");

    test_file
        .write_all(test_str.as_bytes())
        .expect("Writing file failed");

    let mut buffer: Vec<u8> = Vec::new();
    test_file
        .read_to_end(&mut buffer)
        .expect("Reading file to buffer failed!");

    println!("Buffer: {:?}", &buffer);
}

文件的读取和写入发生在当前光标位置。当打开文件时,光标从 0 开始,但写入后,它将位于刚刚写入的数据的末尾。您可以使用以下命令移动光标seek:

use std::io::{Seek as _, SeekFrom};

test_file.seek(SeekFrom::Start(0)).expect("Failed to seek");
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么 Rust 的 read_to_end 不将文件读入缓冲区? 的相关文章

随机推荐