ファイル内容を読み込む
std::fs::read_to_string
を使います。これはResult
を返し、Ok
な時はファイルの中身、Err
な時はstd::io::Error
を返します。
use std::fs;
// `foo.txt`の中身は`foo`
let foo = fs::read_to_string("foo.txt").unwrap();
assert_eq!(foo, "foo");
存在しないファイルパスを渡してしまうとErr
を返します。
または、sttd::fs::File
とstd::io::BufReader
で読み校方法もあります。BufReader
の::read_to_string
にはstd::io::Read
がスコープに必要な為それも持ってきます。
use std::fs::File;
use std::io::{BufReader, Read};
let file = File::open("foo.txt").unwrap();
let mut buf_reader = BufReader::new(file);
let mut contents = String::new();
buf_reader.read_to_string(&mut contents).unwrap();
assert_eq!(contents, "foo");
ファイルへ内容を書き込む
fs::File::create
によって書き込み専用モードで対象のFile
を取得し、その::write_all
へ書き込みたい文字列を渡します。ですが、::write_all
はstd::io::Write
が持つメソッドで使うためにはstd::io::Write
の取り込みが必要です。
use std::fs;
use std::io::Write;
let mut file = fs::File::create("foo.txt").unwrap();
file.write_all(b"nju33").unwrap();
let contents = fs::read_to_string("foo.txt").unwrap();
assert_eq!(contents, "nju33");