赞
踩
在Rust
中,std::fs::File
结构体代表一个文件。它允许我们对文件执行读/写操作。文件 I/O 是通过提供与文件系统交互的功能的 std::fs
模块执行的。
File
结构体中的所有方法都返回std::io::Result
的变体,或者简单地是 Result 枚举。这里会涉及到Rust
中文件几个基本操作:
在Rust
中,可以使用File::open()
方法来打开一个指定文件,函数接收一个文件路径作为参数并返回一个文件对象,如果文件不存在,将会返回一个Err
,看个例子:
use std::fs::File;
fn main() {
let datas = File::open("data.txt");
let file_data = match datas {
Ok(file) => file,
Err(error) => panic!("error:{:?}", error),
};
println!("Data file :{:?}", file_data);
}
在程序顶部,我们导入模块 std::fs::File
以使用文件 I/O 函数。
要打开一个文件,我们调用 File::open("data.txt")
,该函数会读取本地文件系统中的 data.txt
文件。
open()
函数返回一个 Result
枚举,该枚举要么返回 File
对象,要么返回 Err
。
然后,我们对 data_result
变量进行模式匹配,如果打开文件时出现错误,就会调用 panic!
。如果打开文件没有错误,我们将输出 File
对象。
运行程序会打印读取到的文件对象,如果存在的花。
读取文件,可以使用Rust
提供的read_to_string()
方法,该方法实现了std::io::Read
.它会读取直到文件结束(EOF
)的所有字节,并将其复制到一个可变字符串。
use std::fs::File;
use std::io::Read;
fn main() {
let mut datas = File::open("data.txt").unwrap();
let mut file_content = String::new();
datas.read_to_string(&mut file_content).unwrap();
println!("file content :{:?}", file_content);
}
在这里,我们导入两个模块:std::fs::File
和 std::io::Read
用于读取文件。
我们首先打开文件 data.txt
,并将其结果绑定到一个名为 data_file
的变量。
打开文件后,我们使用 read_to_string()
方法,该方法将一个空的可变字符串 file_content
作为参数,并将文件 data.txt
的内容复制到 file_content
中。
使用write()
方法写入文件,该方法来自std::io::Write
标准库。
use std::fs::File;
use std::io::{Read, Write};
fn main() {
let mut data_file = File::create("data.txt").expect("creation failed");
data_file
.write("怎么样,你鸡哥厉不厉害!".as_bytes())
.expect("write error");
println!("写入完成!");
}
std::fs::File
和 std::io::Write
模块来写入文件。 File::create("data.txt")
方法创建一个名为data.txt
的文件,并将其绑定到可变变量 data_file
。这种方式写入文件,新的内容会将之前文件中的内容覆盖。
use std::fs;
fn main() {
// Remove a file
fs::remove_file("data.txt").expect("could not remove file");
println!("Removed file data.txt");
}
std::fs
模块来删除一个文件。remove_file()
方法来删除文件 data.txt
。如果操作无法继续,我们返回一个自定义消息:在出现错误的情况下无法删除文件。data.txt
或无法删除,将会遇到错误。要在Rust
中以追加的模式写入文件,可以使用std::OpenOptions
中的append()
方法实现,看代码:
use std::fs::{File, OpenOptions};
use std::io::{Read, Write};
fn main() {
let mut data_file = OpenOptions::new()
.append(true)
.open("data.txt")
.expect("connot open file");
data_file
.write("鸡你太美!".as_bytes())
.expect("write failed!");
println!("文件追加成功!");
}
在这里导入 std::fs::OpenOptions
和 std::io::Write
模块用于向文件追加。
OpenOptions::new()
和 append(true)
方法打开文件data.txt
以进行追加。
接下来,我们使用来自 File
对象的 write()
方法向文件写入额外内容。
为了处理错误,我们将 expect()
方法与自定义错误消息链接。
本文使用理论加案例的方式快速学习了Rust
中的文件读写相关的内容,掌握了文件处理中的读写删追等基本操作,怎么样,你坤哥厉不厉害!
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。