ファイル操作

上へ

述語名/引数  (fopen *filename *mode *fd)
要約 *filenameで指定されたファイルを*modeで指定されたモードで開き、そのファイル識別子を*fdに返します。
互換性 Win Unix
解説 *modeには以下の文字列が指定できます。
"r" 読み込み専用
"w" 書き込み専用
"a" 追加書き込み
"r+" 書き込み読み込み両用
"w+" 書き込み読み込み両用
"a+" 追加書き込み読み込み両用
"b"バイナリモード

r, r+は、指定されたファイルが存在しない場合失敗します。
w, a, w+, a+は指定されたファイルが存在しない場合新しく生成します。

Windowsの環境では他のモードが使えます。MSDNのfopenを参照してください。

 


述語名/引数  (fclose *fd)
要約 ファイル識別子*fdで指定されたファイルを閉じます。
互換性 Win Unix
解説 N/A

 


述語名/引数  (fgetc *fd *c)
要約 ファイルからデータを1バイト読み取ります。
互換性 Win Unix
解説 ファイルの終端に達すると失敗します。
結果は、文字として返ります。数値に変換するにはctoiを使用してください。

以下の例では、指定されたテキストファイルの改行をカウントします。

例:

(as (test *f):(fopen *f "r" *fd)(sp *fd *s)(count *s '\n' *c 0)(print *c))

(as (sp *fd *l)(fgetc *fd *c):(= *l (*c | *C))(sp *fd *C))
(as (sp *fd *l):(= *l ()))

(as (count () *p *n *t):(= *n *t))
(as (count (*l | *L) *l *n *t):(:= *t1 (+ *t 1))(count *L *l *n *t1))
(as (count (*l | *L) *p *n *t):(count *L *p *n *t))

 


述語名/引数  (fputc *fd *c)
要約 ファイルへデータを1バイト書き込みます。
互換性 Win Unix
解説 *c にはシングルクォーテーションで囲んだ文字が入ります。
数値データを出力したい場合はitocで変換してください。

例:

[D]>(fopen "test_putc.txt" "w" *fd)(fputc *fd 'c')(fclose *fd)
-------------------------D execution ---------------------
----------------------------------------------------------
succeeded.
(fopen "test_putc.txt" "w" FD:)(fputc FD: 'c')(fclose FD:)
execution time: 47 [msec]

[D]>

 

 


述語名/引数  (fgetwc *fd *c)
要約 ファイルからUNICODE文字を一文字読み取ります。
互換性 Win Unix
解説 ファイルの終端に達すると失敗します。

 

 


述語名/引数  (fputwc *fd *c)
要約 ファイルへUNICODE文字を一文字書き込みます。
互換性 Win Unix
解説 *c にはシングルクォーテーションで囲んだ文字が入ります。

 


述語名/引数  (fgets *fd *c)
要約 テキストファイルから一行文字列を読み取ります。
互換性 Win Unix
解説 読み取られる文字列には改行コード(\n)が含まれます。
ファイルの終端に達すると失敗します。

以下の例では、指定されたテキストファイルの改行をカウントします。

例:

(as (test2 *f):(fopen *f "r" *fd)(sp2 *fd *s1)(strList *s1 *s)(count *s '\n' *c 0)(print *c))

(as (sp2 *fd *l)(fgets *fd *s):(sp2 *fd *C)(strcat *s *C *l))
(as (sp2 *fd *l):(= *l ""))

 


述語名/引数  (fread *fd *s)
 (fread *fd *s *list)
要約 ファイルからs式を一つ読み込みます。
互換性 Win Unix
引数 *fd [in] ファイルディスクリプタ
*s [out] 読み込んだs式
*list [out] ファイル中で付けられた変数名と変数の対応表
成功/失敗 true ファイルからs式を正常に読み込みかつ*sと*listに関するマッチングがそれぞれ成功した。
false 上記以外。
解説 ファイルの終端に達すると失敗します。

*listには以下の形式のデータが入ります。
<list> ::= '(' <pair>* ')'
<pair> ::= '(' <変数名> <変数> ')'

例1:

(as (test):(fopen "xml.etc" "r" *fd)(fread *fd *s)(print *s))


述語名/引数  (frread *fd *s)
 (frread *fd *s *list)
要約 ファイルからr式又はs式を一つ読み込みます。
互換性 Win Unix
引数 *fd [in] ファイルディスクリプタ
*s [out] 読み込んだs式
*list [out] ファイル中で付けられた変数名と変数の対応表
成功/失敗 true  s式またはr式を正常に読み込みかつ読み込んだ内容と*sのマッチングに成功した。
false 上記以外
解説 このルールは、r式を読み込むとs式に変換して*sに代入します。

ファイルの終端に達すると失敗します。

*listに入るデータ形式は*fread/3のものと同等です。

 


述語名/引数  (fprintf *fd *format *s)
要約 ファイル指定子*fdで指定されたファイルに、書式化された文字列を出力します。
互換性 Win Unix
解説 指定できる書式化指定子はCランタイムライブラリのfprintfと同じです。

例:

[D]>(fopen "test.txt" "w" *fd)(fprintf *fd "test%d%c%s" (1 'a' "abc"))(fclose *fd)
-------------------------D execution ---------------------
----------------------------------------------------------
succeeded.
(fopen "test.txt" "w" FD:)(fprintf FD: "test%d%c%s" (1 'a' "abc"))(fclose FD:)
execution time: 30 [msec]

[D]>

 


述語名/引数  (fformat *fd *format *s)
要約 ファイル指定子*fdで指定されたファイルに、s式を出力します。
互換性 Win Unix
解説 書式化指定子
/a s式
/d 数字
/s 文字列
/t タブ
// /
/n 改行

fformatはs式を表示できる点でfprintfより優れています。逆に書式化の多様性はfprinfが優れています。

例:

[D]>(fopen "test.txt" "w" *fd)(fformat *fd "test/a" ((atom *1 *2)))(fclose *fd)
-------------------------D execution ---------------------
----------------------------------------------------------
succeeded.
(fopen "test.txt" "w" FD:)(fformat FD: "test/a" ((atom *A *B)))(fclose FD:)
execution time: 0 [msec]

[D]>

 

 


述語名/引数  (getcwd *d)
要約 カレントディレクトリを取得します。
互換性 Win Unix
解説 N/A

 


述語名/引数  (chdir *d)
要約 カレントディレクトリを変更します。
互換性 Win Unix
解説 N/A

 

 


述語名/引数  (fread_b *fd *array)
要約 ファイルの内容を1バイトキャラクタ配列として読み込みます。
互換性 Win Unix
引数 *fd [in] ファイルディスクリプタ
*array [out] 読み込んだ内容を表す1バイトキャラクタ配列
成功/失敗 true ファイルから内容を正常に読み込み、かつ、*arrayに関するマッチングがそれぞれ成功した。
false 上記以外。
解説 N/A

 

述語名/引数  (fwrite_b *fd *array)
要約 ファイルに*arrayの内容を書き込みます。
互換性 Win Unix
引数 *fd [in] ファイルディスクリプタ
*array [in] 書き込む内容を表す1バイトキャラクタ配列
成功/失敗 true ファイルに内容を正常に書き込んだ。
false 上記以外。
解説 N/A