初面网初面网

文件与IO

读取文本文件

假设有一个txt文件,文件路径为/path/to/file.txt,文件内容为hello world

use std::fs;

fn main() {
  let content = fs::read("D:\\text.txt").unwrap();
  println!("{:?}", content);
}

上述代码将读取文件内容并打印到控制台。

读取二进制文件

use std::fs;
use std::io::Read;

fn main(){
  let mut content = Vec::new();
  fs::read("/path/to/file.bin", &mut content).expect("Failed to read file");
  println!("{:?}", content);
}

上述代码将读取文件内容并以二进制格式打印到控制台。

流式读取

由于内存可能不足,无法一次性读取整个文件内容。为了处理这种情况,我们可以使用流式读取。

use std::io::prelude::*;
use std::fs;

fn main() {
  let mut buffer = [0u8; 5];
  let mut file = fs::File::open("D:\\text.txt").unwrap();
  file.read(&mut buffer).unwrap();
  println!("{:?}", buffer);
  file.read(&mut buffer).unwrap();
  println!("{:?}", buffer);
}

std::fs 模块中的 File 类是描述文件的类,可以用于打开文件。

使用 open 方法打开文件,使用 read 方法读取文件内容。

写入文件

一次性写入(如果文件不存在会创建)

use std::fs;

fn main() {
  fs::write("D:\\text.txt", "hello world").unwrap();
}

流式写入

use std::io::prelude::*;
use std::fs::OpenOptions;

fn main() -> std::io::Result<()> {
   
  let mut file = OpenOptions::new()
        .append(true).open("D:\\text.txt")?;

  file.write(b" APPEND WORD")?;

  Ok(())
}

openoption可以设置打开权限,即 read 或 write。 默认是 read。

use std::io::prelude::*;
use std::fs::OpenOptions;

fn main() -> std::io::Result<()> {
   
  let mut file = OpenOptions::new()
        .create(true)
        .append(true)
        .open("D:\\text.txt")?;

  file.write(b" WRITE WORD READ WORD")?;

  Ok(())
}

更新于 2026/5/26