Rustでファイルを操作して、書き込んだり読み込んだりする方法です。
以下について、簡単なコードを添えて書いています。
- ファイルを新規作成して書き込みする
- ファイルを開き、内容を読み込む
- 読み込みと書き込みを行う
- まとめ
ファイルを新規作成して書き込みする
std::fs::File::create
を使ってファイルを作成してます。
作成したファイルへの書き込みは、write_all
を使って行っています。
hello.txt
というファイルがソースコードと同じディレクトリに作成され、こんにちは、Rust!
という文字列がファイルに書き込まれます。
ファイルを開き、内容を読み込む
ファイルの読み込みは、File::open
を使って開いたファイルに対して、read_to_string
を実行します。
read_to_string
の引数に読み込んだ文字列を格納する変数の参照を渡すことで、その変数にファイルの中身が書き込まれます。
読み込みと書き込みを行う
std::fs::OpenOptions
を使うことで、もう少し細かくファイルの読み書きを制御することができます。
OpenOptions
のオブジェクトを作成して、ファイルを開く設定を行います。
以下の例では、ファイルがなければ新規作成し、読み込みと書き込み+追記可能な設定でファイルを開きます。
ファイル内容を標準出力に出した後、ファイルに1行追記するので、実行するたびにhello.txt
の行が増えていきます。
設定とOpenOptions
のメソッドと意味の対応は以下になります。
.create(true)
: ファイルを作成
.write(true)
: 書き込み可能
.read(true)
: 読み込み可能
append(true)
: 追記する
open(<ファイル名>)
: <ファイル名>を開くファイル名>
File::createで読み込もうとすると、エラーになる
File::create
で開いたファイルは書き込み専用なので、読み込もうとするとエラーになります。
同様に、File::open
で開いたファイルは、読み込み専用なので、書き込もうとするとエラーになります。
まとめ
File::create
は書き込み専用でファイルを開く
File::open
は読み込み専用でファイルを開く
File::create
で複数回開くと上書きされる
- 細かいファイルの開き方の指定は、
OpenOptions
を使って指定する
Rustでのファイルの開き方がなんとなくわかりました。
create
で書き込み専用で開くのは、初めてで一瞬戸惑いましたが、確かに新規でファイル作成した時に読み込むケースは少ないと思うので、わかりやすくて良いなぁと思いました。