ファイル操作
述語名/引数 | (fopen *filename *mode *fd) |
要約 | *filenameで指定されたファイルを*modeで指定されたモードで開き、そのファイル識別子を*fdに返します。 |
互換性 | Win Unix |
解説 | *modeには以下の文字列が指定できます。 "r" 読み込み専用 "w" 書き込み専用 "a" 追加書き込み "r+" 書き込み読み込み両用 "w+" 書き込み読み込み両用 "a+" 追加書き込み読み込み両用 "b"バイナリモード r, r+は、指定されたファイルが存在しない場合失敗します。 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には以下の形式のデータが入ります。 |
例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 |