讲师中心 微信公众号

工具推荐

视频效率加速
立刻MV
立刻MV

低成本歌曲 MV、视频生成

Seko
Seko

AI短剧一键生成成片

剧云
剧云

中文短剧剧本制作平台

updream

一键生成高质量推广成片

Rust 教程

浏览27988
更新时间2025-08-27

除了读取和写入控制台之外,Rust 还允许读取和写入文件。

File 结构代表一个文件。 它允许程序对文件执行读写操作。 File 结构中的所有方法都返回 io::Result 枚举的变体。

File 结构体常用的方法如下表所示 −

Sr.No 模块 方法 函数 描述
1 std::fs::File open() pub fn open<P: AsRef>(path: P) -> Result open静态方法可用于以只读模式打开文件。
2 std::fs::File create() pub fn create<P: AsRef>(path: P) -> Result 静态方法以只写模式打开文件。 如果文件已经存在,则旧内容将被销毁。 否则,将创建一个新文件。
3 std::fs::remove_file remove_file() pub fn remove_file<P: AsRef>(path: P) -> Result<()> 从文件系统中删除文件。 不保证该文件会被立即删除。
4 std::fs::OpenOptions append() pub fn append(&mut self, append: bool) -> &mut OpenOptions 设置文件追加模式的选项。
5 std::io::Writes write_all() fn write_all(&mut self, buf: &[u8]) -> Result<()> 尝试将整个缓冲区写入此写入。
6 std::io::Read read_to_string() fn read_to_string(&mut self, buf: &mut String) -> Result 读取此源中直到 EOF 的所有字节,并将它们附加到 buf。

写入文件

让我们看一个示例来了解如何编写文件。

以下程序创建文件"data.txt"。 create() 方法用于创建文件。如果文件创建成功,该方法返回一个文件句柄。 最后一行 write_all 函数将在新创建的文件中写入字节。 如果任何操作失败,expect() 函数将返回错误消息。

use std::io::Write;
fn main() {
   let mut file = std::fs::File::create("data.txt").expect("create failed");
   file.write_all("Hello World".as_bytes()).expect("write failed");
   file.write_all("\nTutorialsPoint".as_bytes()).expect("write failed");
   println!("data written to file" );
}

输出

data written to file

从文件中读取

以下程序读取文件 data.txt 中的内容并将其打印到控制台。 "open"函数用于打开现有文件。文件的绝对或相对路径作为参数传递给 open() 函数。 如果文件不存在或者由于某种原因无法访问,则 open() 函数会引发异常。 如果成功,该文件的文件句柄将被分配给"file"变量。

"file"句柄的"read_to_string"函数用于将该文件的内容读入字符串变量。

use std::io::Read;

fn main(){
   let mut file = std::fs::File::open("data.txt").unwrap();
   let mut contents = String::new();
   file.read_to_string(&mut contents).unwrap();
   print!("{}", contents);
}

输出

Hello World
TutorialsPoint

删除文件

以下示例使用remove_file()函数删除文件。 当发生错误时,expect() 函数会返回一条自定义消息。

use std::fs;
fn main() {
   fs::remove_file("data.txt").expect("could not remove file");
   println!("file is removed");
}

输出

file is removed

将数据附加到文件

append() 函数将数据写入文件末尾。 这如下面给出的示例所示 −

use std::fs::OpenOptions;
use std::io::Write;

fn main() {
   let mut file = OpenOptions::new().append(true).open("data.txt").expect(
      "cannot open file");
   file.write_all("Hello World".as_bytes()).expect("write failed");
   file.write_all("\nTutorialsPoint".as_bytes()).expect("write failed");
   println!("file append success");
}

输出

file append success

复制文件

以下示例将文件中的内容复制到新文件。

use std::io::Read;
use std::io::Write;

fn main() {
   let mut command_line: std::env::Args = std::env::args();
   command_line.next().unwrap();
   // 跳过可执行文件名
   // 接受源文件
   let source = command_line.next().unwrap();
   // 接受目标文件
   let destination = command_line.next().unwrap();
   let mut file_in = std::fs::File::open(source).unwrap();
   let mut file_out = std::fs::File::create(destination).unwrap();
   let mut buffer = [0u8; 4096];
   loop {
      let nbytes = file_in.read(&mut buffer).unwrap();
      file_out.write(&buffer[..nbytes]).unwrap();
      if nbytes < buffer.len() { break; }
   }
}

将上述程序执行为main.exe data.txt datacopy.txt。 执行文件时传递两个命令行参数 −

  • 源文件的路径
  • 目标文件

精品课程

更多
前端入门_HTML5
前端入门_HTML5

共29课时 | 65.3万人学习

CSS视频教程-玉女心经版
CSS视频教程-玉女心经版

共25课时 | 41.5万人学习

JavaScript极速入门_玉女心经系列
JavaScript极速入门_玉女心经系列

共43课时 | 77.2万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn