【RustLangでファイル書き込みを行う】

use std::fs::{File, OpenOptions};
use std::io::{self, Read, Write};
use std::path::Path;

fn main() -> io::Result<()> {
    // ファイル名を指定して、Pathオブジェクトを作成する
    let path = Path::new("example.txt");

    // ファイルが存在する場合は開く、存在しない場合は作成して開く
    let mut file = match File::open(&path) {
        Ok(file) => file,
        Err(_) => {
            // ファイルが存在しない場合は作成する
            let mut file = File::create(&path)?;
            // ファイルに"Hello, world"という文字列を書き込む
            file.write_all(b"Hello, world")?;
            // ファイルに書き込まれたデータをディスクに書き出す
            file.flush()?;
            file
        }
    };

    // ファイルの内容を文字列として読み込む
    let mut contents = String::new();
    file.read_to_string(&mut contents)?;

    // ファイルの内容を表示する
    println!("{}", contents);

    // ファイルを書き込みモードで開く
    let mut file = OpenOptions::new().write(true).open(&path)?;
    // ファイルに文字列を書き込む
    file.write_all(b"test,test,test")?;
    // ファイルに書き込まれたデータをディスクに書き出す
    file.flush()?;

    // ファイルを読み取りモードで開く
    let mut file = OpenOptions::new().read(true).open(&path)?;
    // ファイルの内容を文字列として読み込む
    let mut contents_test = String::new();
    file.read_to_string(&mut contents_test)?;

    // ファイルの内容を表示する
    println!("{}", contents_test);

    // 正常終了を表すResultオブジェクトを返す
    Ok(())
}

example.txtを置き換えて色々試してみて下さい。

コメント