ファイルは名前と種類によって開かれたり作成されたりします。 以下のファイル・アクセス・メソッド(FAM)が認識されます:
r/o
( – fam ) file “r-o”
r/w
( – fam ) file “r-w”
w/o
( – fam ) file “w-o”
bin
( fam1 – fam2 ) file “bin”
+fmode
( fam1 rwxrwxrwx – fam2 ) gforth-1.0 “plus-f-mode”
ファイル・アクセス・モードを fam に追加 - create-file のみ(訳注: rwxrwxrwx は chmod と同様 777 とか 666 。 ただし gforth には直接 8進数記述する方法が無い)
ファイルを開いたり作成したりすると、 他のすべてのファイル・コマンドに使用されるファイル識別子 wfileid が返されます。 すべてのファイル・コマンドは、 ステータス値 wior も返します。 これは、 操作が成功した場合は 0 を返し、 エラーの場合は実装で定義されたゼロ以外の値を返します。
open-file
( c-addr u wfam – wfileid wior ) file “open-file”
create-file
( c-addr u wfam – wfileid wior ) file “create-file”
close-file
( wfileid – wior ) file “close-file”
delete-file
( c-addr u – wior ) file “delete-file”
rename-file
( c-addr1 u1 c-addr2 u2 – wior ) file-ext “rename-file”
ファイル c_addr1 u1 のファイル名を新しい名前 c_addr2 u2 に変更します(rename)
read-file
( c-addr u1 wfileid – u2 wior ) file “read-file”
ファイル wfileid から u1 文字を c_addr からのバッファーに読み取ります。 ゼロ以外の wior はエラーを示します。 U2は読み出したデータの長さを示します。 ファイルの終わりはエラーではなく、 u2$<$u1 かつ wior=0 によって示されます。
read-line
( c_addr u1 wfileid – u2 flag wior ) file “read-line”
wfileid から c_addr u1 のバッファーに行を読み取ります。 Gforth は、 LF と CR と CRLFの 3
つの一般的な行終端文字をすべてサポートします。 ゼロ以外の wior はエラーを示します。 false の flag
は、ファイルの最後(end of the file)で read-line
が呼び出されたことを示します。 u2
は行の長さ(ターミネータなし)を示します。 u2<u1 は行の長さが u2 文字であることを示します。
u2=u1 は、 行が少なくとも u1 文字長であり、 バッファーの u1 文字がその行の文字で埋められており、
そして、 その行の次のスライスは次の read-line
で読み取られます。 行の長さが u1 文字の場合、最初の
read-line
は u2=u1 を返し、 次の read-line は u2=0 を返します。
key-file
( wfileid – n ) gforth-0.4 “key-file”
wfileid から 1 文字 n を読み取ります。 このワードは wfileid のバッファリングを無効にします。
あなたが端末から非標準モード(non-canonical
mode)(RAWモード)で文字を読み取りたい場合は、(C言語インターフェイスを使用して)自分で端末を非標準モード(non-canonical
mode)にする必要があります。 例外は stdin
で、 この場合 Gforth は自動的に非正規モード(non-canonical
mode)に設定します。
key?-file
( wfileid – f ) gforth-0.4 “key-q-file”
f は、 ブロッキング無しに wfileid から少なくとも 1 文字を読み取ることができる場合に true になります。
ファイルに対して read-file
または read-line
も使用したい場合は、 最初に
key?-file
または key-file
を呼び出す必要があります(これら 2
つのワードはバッファリングを無効にします)。
file-eof?
( wfileid – flag ) gforth-0.6 “file-eof-query”
wfileid のファイル終了インジケーター(end-of-file indicator)がセットされている場合、 Flag は true です。
write-file
( c-addr u1 wfileid – wior ) file “write-file”
write-line
( c-addr u wfileid – ior ) file “write-line”
emit-file
( c wfileid – wior ) gforth-0.2 “emit-file”
flush-file
( wfileid – wior ) file-ext “flush-file”
file-status
( c-addr u – wfam wior ) file-ext “file-status”
\ 訳注: wior <> 0 ;ファイルが存在しない(wfamは未定義の値)、
\ wior=0 かつ ( wfam=2 r/w 、 wfam=0 r/o 、 wfam=4 w/o 、
\ wfam=1 r/o bin いずれのacessモードチェックもエラーになった時。
\ 便宜的に読み込み専用かつバイナリとして返す)
file-position
( wfileid – ud wior ) file “file-position”
reposition-file
( ud wfileid – wior ) file “reposition-file”
file-size
( wfileid – ud wior ) file “file-size”
resize-file
( ud wfileid – wior ) file “resize-file”
slurp-file
( c-addr1 u1 – c-addr2 u2 ) gforth-0.6 “slurp-file”
c-addr1 u1 はファイル名、 c-addr2 u2 はファイルの内容です(訳注: slurp;音を立ててすする の意味)
slurp-fid
( fid – addr u ) gforth-0.6 “slurp-fid”
addr u はファイル fid の内容です(訳注: slurp;音を立ててすする の意味)
stdin
( – wfileid ) gforth-0.4 “stdin”
Gforth プロセスの標準入力ファイル。
stdout
( – wfileid ) gforth-0.2 “stdout”
Gforth プロセスの標準出力ファイル。
stderr
( – wfileid ) gforth-0.2 “stderr”
Gforth プロセスの標準エラー出力ファイル。