本文へ移動
mie リファレンス
REPL Playground

std:fs リファレンス

@import 'std:fs' で取得するファイルシステムモジュール。ファイルの読み書き・ディレクトリ操作・存在確認などの非同期 I/O を提供する。

exists

exists(path)
exists: { String | Future(Result(Bool)) }

path の存在を確かめる (不在は Ok(false))。

>>> print fs.exists("README.md")!

mkdir

mkdir(path)
mkdir: { String | Future(Result(Unit)) }

path を親ごと再帰作成する (冪等)。

>>> fs.mkdir("build/tmp")!

open

open(path)
open: { String | Future(Result(File)) }

読み取り専用でファイルを開き File ハンドルを得る (不在は Err)。

>>> f := fs.open("notes.txt")!
>>> print f.size()!

open_rw

open_rw(path)
open_rw: { String | Future(Result(File)) }

読み書きでファイルを開き File ハンドルを得る (不在なら作成)。

>>> f := fs.open_rw("log.txt")!
>>> f.close()!

read

read(path)
read: { String | Future(Result(String)) }

path のファイルを UTF-8 テキストとして読む。

>>> text := fs.read("notes.txt")!
>>> print text

read_bytes

read_bytes(path)
read_bytes: { String | Future(Result(Bytes)) }

path のファイルを Bytes として読む (デコードなし)。

>>> data := fs.read_bytes("image.png")!
>>> print data.length!

readdir

readdir(path)
readdir: { String | Future(Result(List)) }

path 直下のエントリ ({name, is_dir} の List) を読む。

>>> entries := fs.readdir(".")!
>>> print entries

remove

remove(path)
remove: { String | Future(Result(Unit)) }

path (ファイル or 空ディレクトリ) を 1 つ削除する。

>>> fs.remove("build/tmp")!

rename

rename(old, new)
rename: { String, String | Future(Result(Unit)) }

old を new へ改名・移動する。

>>> fs.rename("draft.txt", "final.txt")!

stat

stat(path)
stat: { String | Future(Result) }

path のメタ情報 ({size, mtime, is_dir}) を読む。

>>> info := fs.stat("README.md")!
>>> print info

walk

walk(path)
walk: { String | Future(Result(List)) }

path 配下の通常ファイルのパスを再帰的に集める (パス昇順)。ディレクトリ自身は
含めない。path がファイルなら [path] を返す。

>>> files := fs.walk("docs")!
>>> print files

write

write(path, content)
write: { String, String | Future(Result(Unit)) }

path に content を UTF-8 テキストとして書く (上書き)。

>>> fs.write("greeting.txt", "hello")!

write_bytes

write_bytes(path, content)
write_bytes: { String, Bytes | Future(Result(Unit)) }

path に Bytes content をそのまま書く (上書き)。

>>> data := fs.read_bytes("a.bin")!
>>> fs.write_bytes("b.bin", data)!

File メソッド

close

f.close()
close: { Future(Result(Unit)) }

閉じて封印する。以降のメソッド呼び出しは object.Error。

>>> f := fs.open("data.bin")!
>>> f.close()!

read_at

f.read_at(offset, n)
read_at: { Int, Int | Future(Result(Bytes)) }

オフセットから最大 n bytes 読む。EOF 越えは短い Bytes。

>>> f := fs.open("data.bin")!
>>> chunk := f.read_at(0, 16)!
>>> print chunk

size

f.size()
size: { Future(Result(Int)) }

現在のファイルサイズ (bytes)。

>>> f := fs.open("data.bin")!
>>> print f.size()!

sync

f.sync()
sync: { Future(Result(Unit)) }

OS バッファをディスクへ確定する (fsync)。

>>> f := fs.open_rw("log.txt")!
>>> f.sync()!

truncate

f.truncate(n)
truncate: { Int | Future(Result(Unit)) }

サイズを n bytes に切り詰め / 拡張する。

>>> f := fs.open_rw("log.txt")!
>>> f.truncate(0)!

write_at

f.write_at(offset, bytes)
write_at: { Int, Bytes | Future(Result(Unit)) }

オフセットに bytes を全量書く。末尾を越える位置はファイルを拡張する。

>>> f := fs.open_rw("data.bin")!
>>> data := fs.read_bytes("src.bin")!
>>> f.write_at(0, data)!