使用 Rust 标准库创建文件

RustRustBeginner
立即练习

This tutorial is from open-source community. Access the source code

💡 本教程由 AI 辅助翻译自英文原版。如需查看原文,您可以 切换至英文原版

简介

在这个实验中,我们有一个 create 函数,它以只写模式打开一个文件。如果文件已存在,它会创建一个新文件或删除旧内容。该函数使用 Rust 的标准库来处理文件操作。提供的示例演示了如何使用 create 函数将静态 LOREM_IPSUM 字符串的内容写入名为 "lorem_ipsum.txt" 的文件。输出显示了成功写入操作的确认信息,并使用 cat 命令显示文件的内容。

注意:如果实验未指定文件名,你可以使用任何你想要的文件名。例如,你可以使用 main.rs,并通过 rustc main.rs &&./main 进行编译和运行。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL rust(("Rust")) -.-> rust/DataTypesGroup(["Data Types"]) rust(("Rust")) -.-> rust/FunctionsandClosuresGroup(["Functions and Closures"]) rust(("Rust")) -.-> rust/DataStructuresandEnumsGroup(["Data Structures and Enums"]) rust(("Rust")) -.-> rust/ErrorHandlingandDebuggingGroup(["Error Handling and Debugging"]) rust(("Rust")) -.-> rust/AdvancedTopicsGroup(["Advanced Topics"]) rust(("Rust")) -.-> rust/BasicConceptsGroup(["Basic Concepts"]) rust(("Rust")) -.-> rust/MemorySafetyandManagementGroup(["Memory Safety and Management"]) rust/BasicConceptsGroup -.-> rust/variable_declarations("Variable Declarations") rust/BasicConceptsGroup -.-> rust/mutable_variables("Mutable Variables") rust/DataTypesGroup -.-> rust/string_type("String Type") rust/FunctionsandClosuresGroup -.-> rust/function_syntax("Function Syntax") rust/FunctionsandClosuresGroup -.-> rust/expressions_statements("Expressions and Statements") rust/MemorySafetyandManagementGroup -.-> rust/lifetime_specifiers("Lifetime Specifiers") rust/DataStructuresandEnumsGroup -.-> rust/method_syntax("Method Syntax") rust/ErrorHandlingandDebuggingGroup -.-> rust/panic_usage("panic! Usage") rust/AdvancedTopicsGroup -.-> rust/operator_overloading("Traits for Operator Overloading") subgraph Lab Skills rust/variable_declarations -.-> lab-99271{{"使用 Rust 标准库创建文件"}} rust/mutable_variables -.-> lab-99271{{"使用 Rust 标准库创建文件"}} rust/string_type -.-> lab-99271{{"使用 Rust 标准库创建文件"}} rust/function_syntax -.-> lab-99271{{"使用 Rust 标准库创建文件"}} rust/expressions_statements -.-> lab-99271{{"使用 Rust 标准库创建文件"}} rust/lifetime_specifiers -.-> lab-99271{{"使用 Rust 标准库创建文件"}} rust/method_syntax -.-> lab-99271{{"使用 Rust 标准库创建文件"}} rust/panic_usage -.-> lab-99271{{"使用 Rust 标准库创建文件"}} rust/operator_overloading -.-> lab-99271{{"使用 Rust 标准库创建文件"}} end

create

create 函数以只写模式打开一个文件。如果文件已经存在,旧内容将被删除。否则,将创建一个新文件。

static LOREM_IPSUM: &str =
    "Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod
tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam,
quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo
consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse
cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non
proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
";

use std::fs::File;
use std::io::prelude::*;
use std::path::Path;

fn main() {
    let path = Path::new("lorem_ipsum.txt");
    let display = path.display();

    // 以只写模式打开一个文件,返回 `io::Result<File>`
    let mut file = match File::create(&path) {
        Err(why) => panic!("无法创建 {}: {}", display, why),
        Ok(file) => file,
    };

    // 将 `LOREM_IPSUM` 字符串写入 `file`,返回 `io::Result<()>`
    match file.write_all(LOREM_IPSUM.as_bytes()) {
        Err(why) => panic!("无法写入 {}: {}", display, why),
        Ok(_) => println!("成功写入 {}", display),
    }
}

以下是预期的成功输出:

$ rustc create.rs && ./create
成功写入 lorem_ipsum.txt
$ cat lorem_ipsum.txt
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod
tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam,
quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo
consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse
cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non
proident, sunt in culpa qui officia deserunt mollit anim id est laborum.

(与上一个示例一样,鼓励你在失败条件下测试此示例。)

[OpenOptions] 结构体可用于配置文件的打开方式。

总结

恭喜你!你已经完成了“创建”实验。你可以在 LabEx 中练习更多实验来提升你的技能。