Appearance
文件与IO
读取文本文件
假设有一个txt文件,文件路径为/path/to/file.txt,文件内容为hello world。
rust
use std::fs;
fn main() {
let content = fs::read("D:\\text.txt").unwrap();
println!("{:?}", content);
}上述代码将读取文件内容并打印到控制台。
读取二进制文件
rust
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);
}上述代码将读取文件内容并以二进制格式打印到控制台。
流式读取
由于内存可能不足,无法一次性读取整个文件内容。为了处理这种情况,我们可以使用流式读取。
rust
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 方法读取文件内容。
写入文件
一次性写入(如果文件不存在会创建)
rust
use std::fs;
fn main() {
fs::write("D:\\text.txt", "hello world").unwrap();
}流式写入
rust
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。
rust
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(())
}