Rust 标准库 API 文件和文件夹操作 File,读取/创建/修改/追加/删除/重命名文件等

File::create

使用File的关联函数(类似Java中的静态方法)create,创建文件,如果存在,则覆盖。

rust 复制代码
use std::fs::{File, Metadata};

fn main() -> std::io::Result<()> {
    let file: File = File::create("foo.txt")?;
    let metadata: Metadata = file.metadata()?;
    println!("{:?}", metadata);
}

fs::read_dir

fs::read_dir函数读取文件夹目录。

rust 复制代码
let dir: fs::ReadDir = fs::read_dir("/")?;
for x in dir { // Result<DirEntry>
    let entry: DirEntry = x?;
    println!("{:?}, {:?}", entry.file_name(), entry.path());
}

fs::write

fs::write函数向文件中写入内容。

rust 复制代码
fn main() -> std::io::Result<()> {
    fs::write("foo.txt", "abc".as_bytes())?;
}

OpenOptions append

使用OpenOptionsappend方法,对文件追加内容。

rust 复制代码
fn main() -> std::io::Result<()> {
    let mut file = OpenOptions::new().append(true).open("foo.txt")?;

    file.write("xyz".as_bytes())?;
}

fs::read_to_string

fs::read_to_string函数:读取文件中的内容

rust 复制代码
fn main() -> std::io::Result<()> {
    let string: String = fs::read_to_string("foo.txt")?;
    println!("{}", string);
}

fs::copy

fs::copy函数:拷贝文件。

rust 复制代码
fn main() -> std::io::Result<()> {
    fs::copy("foo.txt", "foo2.txt")?;
}

fs::rename

fs::rename函数:文件重命名。

rust 复制代码
fn main() -> std::io::Result<()> {
    fs::rename("foo2.txt", "foo3.txt")?;
}

fs::remove_file

fs::remove_file函数:移除删除文件。

rust 复制代码
fn main() -> std::io::Result<()> {
    fs::remove_file("foo.txt")?;
}

fs::create_dir

fs::create_dir函数:创建文件夹,如果指定了多级目录,路径中的目录必须存在。

rust 复制代码
fn main() -> std::io::Result<()> {
    fs::create_dir("test_dir")?;
}

fs::create_dir_all

fs::create_dir_all函数:创建文件夹,路径中不存在的目录也会同步创建。

rust 复制代码
fn main() -> std::io::Result<()> {
    fs::create_dir_all("test_dir2/sub_dir")?;
    fs::create_dir_all("test_dir2/sub_dir2")?;
}

fs::remove_dir

fs::remove_dir函数:移除文件夹,文件夹中不能包含文件或子文件夹。

rust 复制代码
fn main() -> std::io::Result<()> {
    ffs::remove_dir("test_dir")?;
}

fs::remove_dir_all

fs::remove_dir_all函数:删除整个文件夹,无论是否包含文件或子文件夹,将此文件夹中的内容全部删除。

rust 复制代码
fn main() -> std::io::Result<()> {
    fs::remove_dir_all("test_dir2")?;
}

OpenOptions create

OpenOptions中的create方法表示,不存在就创建文件,read:可读,write:可写,append:追加写。

rust 复制代码
fn main() -> std::io::Result<()> {
    // Opening a file for both reading and writing, as well as creating it if it doesn't exist:
    let mut file = OpenOptions::new()
        .read(true)
        .write(true)
        .append(true)
        .create(true)
        .open("foo.txt")?;
    file.write_all("1234".as_bytes())?;
}
相关推荐
Tisfy42 分钟前
LeetCode 1927.求和游戏:抵消+看最值
java·leetcode·游戏·题解·博弈论
钛态6 小时前
Vite 中的 CSS 工程化:从 CSS Modules 到 UnoCSS 的渐进式迁移
前端·vue·react·web
秋饼7 小时前
JDK 27 企业级 AI 服务落地实战:G1 默认、紧凑对象头、后量子 TLS 与 JFR 脱敏全解析
java·ai·技术分享·后端开发
Csvn7 小时前
原型链、this 与闭包内存:三座深水区一次打通(含内存泄漏排查实战)
前端·javascript
卓怡学长8 小时前
w176基于SpringBoot的医院管理系统
java·spring boot·spring·maven·intellij-idea
lemon_sjdk8 小时前
ObjectProperty
java·开发语言·算法
葡萄城技术团队8 小时前
如何通过 JSON 数据源 / Web API 快速构建轻量级报表(Report)?
前端·json·原型模式
hh9508 小时前
Agent Plan x DeepSeek Harness:Agent 供应链安全与第三方插件审计
java·开发语言·安全·agent plan·adg成都社区·adg社区
吴声子夜歌8 小时前
Java面试——HBase原理及应用
java·面试·hbase
浪兎兎8 小时前
【Java Web】Servlet + JSP 笔记
java·前端·servlet