Rust 標準ライブラリを使ってファイルを作成する

RustRustBeginner
今すぐ練習

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

💡 このチュートリアルは英語版からAIによって翻訳されています。原文を確認するには、 ここをクリックしてください

はじめに

この実験では、書き込み専用モードでファイルを開く create 関数があります。この関数は、新しいファイルを作成するか、既に存在する場合は古いコンテンツを破棄します。この関数は、Rustの標準ライブラリを使ってファイル操作を行います。提供されたサンプルでは、静的な LOREM_IPSUM 文字列を "lorem_ipsum.txt" という名前のファイルに書き込むために create 関数を使う方法が示されています。出力には、書き込み操作が成功したことが確認され、cat コマンドを使ってファイルの内容が表示されます。

注: 実験でファイル名が指定されていない場合、好きなファイル名を使うことができます。たとえば、main.rs を使って、rustc main.rs &&./main でコンパイルして実行することができます。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL rust(("Rust")) -.-> rust/DataTypesGroup(["Data Types"]) rust(("Rust")) -.-> rust/MemorySafetyandManagementGroup(["Memory Safety and Management"]) rust(("Rust")) -.-> rust/BasicConceptsGroup(["Basic Concepts"]) 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/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!("couldn't create {}: {}", display, why),
        Ok(file) => file,
    };

    // `LOREM_IPSUM` 文字列を `file` に書き込み、`io::Result<()>` を返します
    match file.write_all(LOREM_IPSUM.as_bytes()) {
        Err(why) => panic!("couldn't write to {}: {}", display, why),
        Ok(_) => println!("successfully wrote to {}", display),
    }
}

期待される正常な出力は以下の通りです。

$ rustc create.rs && ./create
successfully wrote to 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] 構造体を使って、ファイルの開き方を設定することができます。

まとめ

おめでとうございます!あなたは Create 実験を完了しました。あなたの技術を向上させるために、LabExでさらに多くの実験を練習することができます。