ys memos

Blog

Rustですでに存在しているファイルを上書きする


rust

2024/01/20


Rustの std::fsを使って、すでに存在しているファイルを、既存の内容を無視して上書きしようと思い、

「すでに存在しているのでFile::open()かな?」なんて思って試したところ、そうじゃなかったのでメモを残す。


  • すでに存在しているファイル( dummy.txt)を、既存内容を無視して上書きする
  • サンプルコードでは、エラー処理は省略し、 .expect()を用いる

直感とは反するが、既存内容を無視する場合、このようにするとできた。

use std::io::Write;

fn main() {
    let mut file = std::fs::File::create("dummy.txt").expect("Failed to create file");
    file.write_all(b"Hello, world!")
        .expect("Failed to write to file");
}

直感的に試してしまった File::open()の例。

use std::io::Write;

fn main() {
    let mut file = std::fs::File::open("dummy.txt").expect("Failed to create file");
    file.write_all(b"Hello, world!")
        .expect("Failed to write to file");
}
thread 'main' panicked at src/main.rs:6:10:
Failed to write to file: Os { code: 9, kind: Uncategorized, message: "Bad file descriptor" }
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace

エラー処理は、利用時の要求に応じて適宜追加してくださるよう、お願いします。


関連タグを探す