std.file
ファイルの読み書き。任意モジュールなので、扱えない処理系では import でエラーになる。取り込めたあとの「無い・権限が無い」は Result で返る。
import std.file;
_ = file.write("さかな.txt", "さめ\n");
if var text = file.read("さかな.txt") { print(text.trim()); } // さめ
_ = file.remove("さかな.txt");
file.read file.read_bytes file.write file.write_bytes file.append file.exists file.is_dir file.size file.modified file.remove file.copy file.rename file.list file.make_dir file.open File.read_line File.read File.write File.close
関数
- file.read(p: string) → Result<string>¶
-
UTF-8 の文字列として、まるごと読む。
_ = file.write("data.txt", "さめ\n"); if var text = file.read("data.txt") { print(text.trim()); // さめ } else var e { print(e.message()); } _ = file.remove("data.txt");
- file.read_bytes(p: string) → Result<bytes>¶
-
バイト列として、まるごと読む。
_ = file.write("data.txt", "さめ"); if var b = file.read_bytes("data.txt") { print(b.len()); } // 6 _ = file.remove("data.txt");
- file.write(p: string, text: string) → Result<void>¶
-
文字列を書く。すでにあれば上書きする。
_ = file.write("data.txt", "さめ\n"); print(file.exists("data.txt")); // true _ = file.remove("data.txt");
- file.write_bytes(p: string, b: bytes) → Result<void>¶
-
バイト列を書く。すでにあれば上書きする。
_ = file.write_bytes("data.bin", "さめ".bytes()); if var b = file.read_bytes("data.bin") { print(b.len()); } // 6 _ = file.remove("data.bin");
- file.append(p: string, text: string) → Result<void>¶
-
末尾に足す。無ければ作る。
_ = file.write("log.txt", "1\n"); _ = file.append("log.txt", "2\n"); if var text = file.read("log.txt") { print(text.trim().split("\n").len()); } // 2 _ = file.remove("log.txt");
- file.exists(p: string) → bool¶
-
あるかどうか。
print(file.exists("ない.txt")); // false
- file.is_dir(p: string) → bool¶
-
ディレクトリかどうか。
_ = file.make_dir("data"); print(file.is_dir("data")); // true
- file.size(p: string) → Result<int>¶
-
バイト数。
_ = file.write("data.txt", "さめ"); if var n = file.size("data.txt") { print(n); } // 6 _ = file.remove("data.txt");
- file.modified(p: string) → Result<Time>¶
-
最後に書き換えた時刻。
import std.time; _ = file.write("data.txt", "さめ"); if var t = file.modified("data.txt") { print(t.year() >= 2026); } // true _ = file.remove("data.txt");
- file.remove(p: string) → Result<void>¶
-
消す。
_ = file.write("data.txt", "さめ"); _ = file.remove("data.txt"); print(file.exists("data.txt")); // false
- file.copy(from: string, to: string) → Result<void>¶
-
複製する。
_ = file.write("a.txt", "さめ"); _ = file.copy("a.txt", "b.txt"); print(file.exists("b.txt")); // true _ = file.remove("a.txt"); _ = file.remove("b.txt");
- file.rename(from: string, to: string) → Result<void>¶
-
名前を変える。場所を移すのにも使う。
_ = file.write("a.txt", "さめ"); _ = file.rename("a.txt", "b.txt"); print(file.exists("a.txt")); // false _ = file.remove("b.txt");
- file.list(dir: string) → Result<list<string>>¶
-
ディレクトリの中の名前を並べる。
_ = file.make_dir("data"); _ = file.write("data/fish.txt", "さめ"); if var names = file.list("data") { print(names.len() >= 1); } // true
- file.make_dir(p: string) → Result<void>¶
-
ディレクトリを作る。途中の階層も作る。
_ = file.make_dir("a/b/c"); print(file.is_dir("a/b/c")); // true
- file.open(p: string, mode: string) → Result<File>¶
-
開いて、少しずつ読み書きする。大きなファイルに使う。
p string ファイルの場所 mode string "r" 読む / "w" 上書きする / "a" 末尾に足す _ = file.write("log.txt", "1行目\n2行目\n"); if var f = file.open("log.txt", "r") { while var line = f.read_line() { print(line); } f.close(); } _ = file.remove("log.txt");
File
開いたファイル。コピーしても同じファイルを指す(ハンドル型)。
- File.read_line() → string?¶
-
1行読む。改行は含まない。終端なら none。
_ = file.write("log.txt", "1行目\n2行目\n"); if var f = file.open("log.txt", "r") { print(f.read_line() ?? ""); // 1行目 f.close(); } _ = file.remove("log.txt");
- File.read(n: int) → Result<bytes>¶
-
n バイト読む。残りが少なければ、あるだけ返す。
_ = file.write("data.txt", "さめ"); if var f = file.open("data.txt", "r") { if var b = f.read(3) { print(b.to_string() ?? ""); } // さ f.close(); } _ = file.remove("data.txt");
- File.write(text: string) → Result<void>¶
-
書く。開くときの mode に合わせて、上書きか追加になる。
if var f = file.open("out.txt", "w") { _ = f.write("さめ\n"); f.close(); } if var text = file.read("out.txt") { print(text.trim()); } // さめ _ = file.remove("out.txt");
- File.close() → void¶
-
閉じる。書いたものはここで確実に書き出される。
if var f = file.open("out.txt", "w") { _ = f.write("さめ"); f.close(); print(file.exists("out.txt")); // true } _ = file.remove("out.txt");