Rust标准库中用PathBuf和Path两个类型来处理路径。它们之间的关系就类似
String和str之间的关系:一个对内部数据有所有权,还有一个只是借用。实际上,
读源码可知,PathBuf里面存的是一个OsString,Path里面存的是一个OsStr。这两个
类型定义在std::path模块中。
Rust对文件操作主要是通过std::fs::File来完成的。这个类型定义了一些成
员方法,可以实现打开、创建、复制、修改权限等文件操作。std::fs模块下还有
一些独立函数,比如remove_file、soft_link等,也是非常有用的。
对文件的读写,则需要用到std::io模块了。这个模块内部定义了几个重要的
trait,比如Read/Write。File类型也实现了Read和Write两个trait,因此它拥有一系列
方便读写文件的方法,比如read、read_to_end、read_to_string等。这个模块还定义
了BufReader等类型。我们可以把任何一个满足Read trait的类型再用BufReader包一
下,实现有缓冲的读取。
下面用一个示例来演示说明这些类型的使用方法:
use std::io::prelude:😗;
use std::io::BufReader;
use std::fs::File;
fn test_read_file() -> Result<(), std::io::Error> {
let mut path = std::env::home_dir().unwrap();
path.push("
.rustup");
path.push(“settings”);
path.set_extension(“toml”);
let file = File::open(&path)?;
let reader = BufReader::new(file);
for line in reader.lines() {
println!(“Read a line: {}”
, line?);
}
Ok(())
}
fn main() {
match test_read_file() {
Ok(_) => {}
Err(e) => {
println!(“Error occured: {}”
, e);
}
}
}
rust实战系列一百五十一:文件和路径
最新推荐文章于 2024-12-26 07:58:19 发布