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())?;
}
相关推荐
webkubor14 小时前
一次前端生产白屏复盘:旧 HTML、Hash 资源和 MIME type text/html
前端·前端工程化
大卫小东(Sheldon)14 小时前
小鹤音形词典 新版发布了 - 离线的小鹤双拼\音形编码查询软件,支持AI多轮对话
ai·rust·xiaohe-yinxing
咩咩啃树皮14 小时前
第63篇【终极整合巨作】从零手写原生中后台管理系统|整合62篇全部前端知识点|从头到尾完整架构+全功能逻辑
前端·架构
jjjava2.014 小时前
MyBatis动态if/trim/where/set标签详解
java·开发语言·数据库
gugucoding14 小时前
34.【Java】I/O流(下):NIO与文件操作
java·python·nio
tianyu23414 小时前
双指针循环匹配金额——打款记录与账单的自动对账算法
java·算法·双指针循环·匹配金额
YDS82915 小时前
大营销平台 —— 架构解析和抽奖流程串联
java·springboot·ddd
小贤plus15 小时前
MyBatis‑Plus IPage 分页踩坑实战:分页与全量查询兼容方案
java
Java内核笔记15 小时前
BeanRegistrar:Spring Boot 4 最被低估的新特性,彻底改变 Bean 注册方式
java·后端
还是鼠鼠15 小时前
【Spring AI智能体实战 02】Spring Boot 3.4整合Spring AI:项目创建与依赖配置
java·人工智能·spring boot·maven·spring ai