rust实战系列一百五十一:文件和路径

本文介绍了Rust中文件操作相关内容。用PathBuf和Path处理路径,二者关系类似String和str。通过std::fs::File完成文件操作,std::fs模块有独立函数。文件读写用std::io模块,其定义了重要trait,File实现了相关trait。还给出了使用示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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);
}
}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

断水流大撕兄

你的鼓励,就是我最大的动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值