网易首页 > 网易号 > 正文 申请入驻

如何在 Rust 中读取和写入文件 | Linux 中国

0
分享至

导读:跟随这个演示,学习如何在 Rust 中使用文件系统模块。

本文字数:2082,阅读时长大约: 2分钟

知道如何读写文件对各种用途都很有用。在 Rust 中,这项任务是通过标准库中的文件系统模块( doc.rust-lang.org)完成的。在这篇文章中,我将向你介绍如何使用这个模块。

为了演示这项任务,我准备了一些示例代码,也可以在 github.com 上找到。

准备工作

在使用 Rust 时,失败的函数会返回 doc.rust-lang.org 类型。尤其是文件系统模块会返回专门的类型 doc.rust-lang.org。有了这些知识,你可以从main()函数中返回相同的类型:

  1. fn main() -> std::io::Result<()> {

  2. /* ...code comes here... */

Rust 文件写入

在 Rust 中执行文件的 I/O 操作是相对容易的。写入文件可以简化为一行:

  1. use std::fs;

  2. fs::write("favorite_websites.txt", b"opensource.com")?;

  3. Ok(())

使用错误传播操作符(?),错误信息被传递到调用函数中,随后可以处理错误。由于main()是调用栈中唯一的其他函数,如果写操作失败,错误信息将被传递到控制台输出。

doc.rust-lang.org 函数的语法是非常先进的。第一个参数是文件路径,它必须是 doc.rust-lang.org 类型。第二个参数是内容,它实际上是一个字节切片([u8])。Rust 将传递的参数转换为正确的类型。幸运的是,这些类型基本上是下面的例子中所处理的唯一类型。

使用文件描述符类型 doc.rust-lang.org 可以实现对写操作更简洁的访问:

  1. let mut file = fs::File::create("favorite_websites.txt")?;

  2. file.write_all(b"opensource.com\n")?;

  3. Ok(())

由于文件类型实现了 doc.rust-lang.org 特性,所以可以使用相关的方法来写入文件。然而,create方法可以覆盖一个已经存在的文件。

为了获得对文件描述符的更多控制,必须使用 doc.rust-lang.org 类型。这提供了类似于其他语言中的打开模式:

  1. let mut file = fs::OpenOptions::new()

  2. .append(true)

  3. .open("favorite_websites.txt")?;

  4. file.write_all(b"sourceforge.net\n")?;

Rust 文件读取

适用于写的东西也适用于读。读取也可以通过简单的一行代码来完成:

  1. let websites = fs::read_to_string("favorite_websites.txt")?;

以上一行读取文件的内容并返回一个字符串。除了读取字符串,还有 doc.rust-lang.org 函数,如果文件包含二进制数据,该函数会将数据读成一个字节向量。

下一个例子显示了如何将文件的内容读入内存,随后逐行打印到控制台:

  1. let file = fs::File::open("favorite_websites.txt")?;

  2. let lines = io::BufReader::new(file).lines();

  3. for line in lines {

  4. if let Ok(_line) = line {

  5. println!(">>> {}", _line);

  6. }

  7. }

总结

如果你已经熟悉了其他编程语言,你可能已经注意到没有close-函数(或类似的)来释放文件句柄。在 Rust 中,当相关变量超出作用域,文件句柄就会被释放。为了定义关闭行为,可以在文件表示的周围应用作用域({ })。我建议你熟悉 doc.rust-lang.org 和 doc.rust-lang.org 特性,因为你可以在许多其他类型中找到这个特性的实现。

via:

作者: 选题: 译者: 校对:

本文由 原创编译, 荣誉推出

LCTT 译者 :geekpi

翻译: 1851.5 篇

贡献: 3367 天

2013-10-25

2023-01-13

https://linux.cn/lctt/geekpi

欢迎遵照 CC-BY-SA 协议规定转载,

如需转载,请在文章下留言 “ 转载:公众号名称”,

我们将为您添加白名单,授权“ 转载文章时可以修改”。

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
“中国首次将核弹头置于高度战备状态”

“中国首次将核弹头置于高度战备状态”

枢密院十号
2024-06-17 23:44:53
1948年粟裕向中央汇报抗命缘由,主席大惊:你想灭掉450万国军?

1948年粟裕向中央汇报抗命缘由,主席大惊:你想灭掉450万国军?

可乐88
2024-05-31 16:13:16
已做好牺牲准备!海警登检菲船并不轻松:画面显示我方穿了防弹衣

已做好牺牲准备!海警登检菲船并不轻松:画面显示我方穿了防弹衣

笔墨V
2024-06-20 00:48:39
我7岁过继给三叔,如今三叔家房子拆迁,我媳妇:拆迁款咱不能要

我7岁过继给三叔,如今三叔家房子拆迁,我媳妇:拆迁款咱不能要

小女子不简单
2024-06-18 15:57:16
年世兰死后不久,年羹尧随即被逼自尽,雍正:没有她,留哥哥何用

年世兰死后不久,年羹尧随即被逼自尽,雍正:没有她,留哥哥何用

史笔似尘钩
2024-06-18 21:27:09
惨!王晶新片票房不到14万,全是一星差评

惨!王晶新片票房不到14万,全是一星差评

影视原说a
2024-06-19 18:56:53
大量中国球迷给 荷甲阿贾克斯天乐留言 请加入中国队!拯救国足

大量中国球迷给 荷甲阿贾克斯天乐留言 请加入中国队!拯救国足

林子说事
2024-06-19 19:40:26
中建壹品北京项目打6.8折被约谈,前5月拿地第一,北京分公司销售业绩承压

中建壹品北京项目打6.8折被约谈,前5月拿地第一,北京分公司销售业绩承压

凤凰WEEKLY财经
2024-06-19 11:20:10
马祖拉:波尔津吉斯出战G5是凌驾于医疗团队之上的 为他点赞

马祖拉:波尔津吉斯出战G5是凌驾于医疗团队之上的 为他点赞

直播吧
2024-06-19 23:36:13
幼儿园的老师才是知道秘密最多的人!因为小朋友什么都给老师讲!

幼儿园的老师才是知道秘密最多的人!因为小朋友什么都给老师讲!

开玩笑的水母
2024-06-19 18:24:56
注意到没有,中国给越来越多发达国家“单方面免签”了

注意到没有,中国给越来越多发达国家“单方面免签”了

江平舟
2024-06-18 13:00:44
四川一村干部工作期间被打病发身亡,人社局:无法确认劳动关系,中止工伤认定

四川一村干部工作期间被打病发身亡,人社局:无法确认劳动关系,中止工伤认定

澎湃新闻
2024-06-19 07:06:26
杭州楼市全军覆没,杭州楼市东方润园房价突破100000元

杭州楼市全军覆没,杭州楼市东方润园房价突破100000元

有事问彭叔
2024-06-19 15:22:03
菲律宾运补船再遭挫败,美国陷入兑现保护困境,中方优势地位形成

菲律宾运补船再遭挫败,美国陷入兑现保护困境,中方优势地位形成

生思孰虑
2024-06-19 07:00:09
基民哭死,“上海滩公募一哥”塌房了

基民哭死,“上海滩公募一哥”塌房了

一品扫地僧
2024-06-19 21:37:23
高考560分~600分,建议报这5所大学,就业非常好

高考560分~600分,建议报这5所大学,就业非常好

户外钓鱼哥阿勇
2024-06-19 18:28:38
欧文今年总决赛场均仅19.8分,比16年与17年总决赛低近10分

欧文今年总决赛场均仅19.8分,比16年与17年总决赛低近10分

大眼瞄世界
2024-06-19 23:38:38
马科斯关闭谈判大门,中菲贸易已质变,9国孤立菲律宾

马科斯关闭谈判大门,中菲贸易已质变,9国孤立菲律宾

元芳
2024-06-13 09:48:53
我是夜班医生,那晚妻子被送来急诊,让我发现了她放浪的另一面

我是夜班医生,那晚妻子被送来急诊,让我发现了她放浪的另一面

夜色故事集锦
2023-05-26 16:15:52
黑龙江美女医生遭折磨12个小时,多处部位被咬,作案5人预谋已久

黑龙江美女医生遭折磨12个小时,多处部位被咬,作案5人预谋已久

牧愚君
2024-05-06 00:17:56
2024-06-20 04:10:44
Linux
Linux
Linux 中国开源社区
8016文章数 73124关注度
往期回顾 全部

科技要闻

618观察:谁为高强度的低价竞争买单?

头条要闻

丁进勇辞去越共中央政治局委员和河内市委书记职务

头条要闻

丁进勇辞去越共中央政治局委员和河内市委书记职务

体育要闻

欧洲杯最大的混子,非他莫属

娱乐要闻

黄一鸣“杀疯了” 直播间卖大葱养孩子

财经要闻

深化科创板改革 证监会发布八条措施

汽车要闻

双肾格栅变化大/内饰焕新 新一代宝马X3官图发布

态度原创

时尚
家居
本地
健康
军事航空

几个小物件,打造宅家时的「inner peace」

家居要闻

自然开放 实现灵动可变空间

本地新闻

中式沙拉宇宙的天花板,它必须有姓名

晚餐不吃or吃七分饱,哪种更减肥?

军事要闻

以色列涉嫌在加沙使用重型炸弹 或多次违反战争法

无障碍浏览 进入关怀版