商城首页欢迎来到中国正版软件门户

您的位置: 首页 > 文章列表 > 编程开发 > Rust如何在Linux上进行文件操作

Rust如何在Linux上进行文件操作

  发布于2026-07-16 阅读(0)

扫一扫,手机访问

在 Rust 里搞文件操作,其实比你想象的要直接。标准库里的 std::fs 模块基本覆盖了日常所需的各种场景——创建、读写、删除、重命名,甚至目录管理,一条龙安排。下面咱们就逐个过一遍核心操作,代码和思路都摆在这儿,直接拿去用就行。

Rust如何在Linux上进行文件操作

  1. 创建新文件
    File::create 可以快速新建一个文件。如果文件已存在,它会直接覆盖原来的内容。配合 writeln! 写入一行数据,异常处理交给 ? 操作符向上传递。
use std::fs::File;
use std::io::{self, Write};

fn main() -> io::Result<()> {
    let mut file = File::create("foo.txt")?;
    writeln!(file, "Hello, world!")?;
    Ok(())
}
  1. 打开已有文件并读取内容
    File::open 用于读取已存在的文件。将内容读到字符串变量里,然后打印出来。注意路径必须正确,否则会报错。
use std::fs::File;
use std::io::{self, Read};

fn main() -> io::Result<()> {
    let mut file = File::open("foo.txt")?;
    let mut contents = String::new();
    file.read_to_string(&mut contents)?;
    println!("File contents: {}", contents);
    Ok(())
}
  1. 追加内容到文件末尾
    使用 OpenOptions 并设置 append(true),就可以在不覆盖已有内容的情况下追加新数据。
use std::fs::OpenOptions;
use std::io::{self, Write};

fn main() -> io::Result<()> {
    let mut file = OpenOptions::new().append(true).open("foo.txt")?;
    writeln!(file, "Another line!")?;
    Ok(())
}
  1. 以字节形式读取文件内容
    有时候你需要处理二进制数据,比如图片或自定义格式。这时候用 read_to_end 把内容读到 Vec 里。
use std::fs::File;
use std::io::{self, Read};

fn main() -> io::Result<()> {
    let mut file = File::open("foo.txt")?;
    let mut contents = Vec::new();
    file.read_to_end(&mut contents)?;
    println!("File contents: {:?}", contents);
    Ok(())
}
  1. 删除文件
    fs::remove_file 直接移除指定路径的文件。注意如果文件不存在或权限不足,会返回错误。
use std::fs;

fn main() -> std::io::Result<()> {
    fs::remove_file("foo.txt")?;
    Ok(())
}
  1. 重命名文件
    fs::rename 负责更名,也可以用来移动文件(只要目标路径在同一个文件系统内)。
use std::fs;

fn main() -> std::io::Result<()> {
    fs::rename("foo.txt", "bar.txt")?;
    Ok(())
}
  1. 创建目录
    fs::create_dir 用来新建一个文件夹。如果需要递归创建多级目录,可以用 create_dir_all
use std::fs;

fn main() -> std::io::Result<()> {
    fs::create_dir("my_new_directory")?;
    Ok(())
}
  1. 删除目录
    fs::remove_dir 只能删除空目录。如果目录非空,会返回错误;要递归删除整个目录树,得用 remove_dir_all(注意危险操作)。
use std::fs;

fn main() -> std::io::Result<()> {
    fs::remove_dir("my_new_directory")?;
    Ok(())
}

上面所有代码都大量使用了 ? 操作符——这是 Rust 在错误处理上最实用的语法糖。一旦某个操作抛出异常,它会直接将错误返回给调用者,省去你写一大堆 match 的麻烦。当然,生产环境里你可能还需要更细致的错误分类和恢复逻辑,但作为基础入门,这套写法足够干净。

另外,Rust 的 std::path::Pathstd::path::PathBuf 专门用来处理路径拼接、解析等操作,而 std::env 模块可以获取环境变量、当前工作目录等信息,这些在更复杂的文件场景下会经常用到。

最后提醒一句:无论创建、修改还是删除,务必确认你对目标文件或目录拥有足够的权限。否则 Rust 编译器再优秀,也帮不了你绕过操作系统的权限限制。

本文转载于:https://www.yisu.com/ask/40159850.html 如有侵犯,请联系zhengruancom@outlook.com删除。
免责声明:正软商城发布此文仅为传递信息,不代表正软商城认同其观点或证实其描述。

热门关注