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())?;
}
相关推荐
橘猫云计算机设计3 分钟前
基于SSM的《计算机网络》题库管理系统(源码+lw+部署文档+讲解),源码可白嫖!
java·数据库·spring boot·后端·python·计算机网络·毕设
祈澈菇凉39 分钟前
如何结合使用thread-loader和cache-loader以获得最佳效果?
前端
菜鸟一枚在这42 分钟前
深度解析建造者模式:复杂对象构建的优雅之道
java·开发语言·算法
垣宇42 分钟前
Vite 和 Webpack 的区别和选择
前端·webpack·node.js
java1234_小锋1 小时前
一周学会Flask3 Python Web开发-客户端状态信息Cookie以及加密
前端·python·flask·flask3
化作繁星1 小时前
如何在 React 中测试高阶组件?
前端·javascript·react.js
Au_ust1 小时前
千峰React:函数组件使用(2)
前端·javascript·react.js
gyeolhada1 小时前
2025蓝桥杯JAVA编程题练习Day5
java·数据结构·算法·蓝桥杯
菜鸟一枚在这1 小时前
深入理解设计模式之代理模式
java·设计模式·代理模式
爱吃南瓜的北瓜1 小时前
npm install 卡在“sill idealTree buildDeps“
前端·npm·node.js