チャネルを使った入出力

チャネルっていうのは,ファイルディスクリプタみたいなものだと思っておけば良さそう。

入力用には open_in と close_in を使う。

こういうファイル members.txt があったとして:

^o^ >type members.txt
andy
bill
charlie

ファイルから入力する例。

# let infile = open_in "C:/home/takatoh/members.txt";;
val infile : in_channel = <abstr>
# input_line infile;;
- : string = "andy"
# input_line infile;;
- : string = "bill"
# input_char infile;;
- : char = 'c'
# input_byte infile;;
- : int = 104

ファイルの最後に到達すると End_of_file 例外が発生する。

# input_line infile;;
- : string = "arlie"
# input_line infile;;
Exception: End_of_file.
# close_in infile;;
- : unit = ()

一方,ファイルに出力するには open_out と close_out。

# let outfile = open_out "C:/home/takatoh/foo.txt";;
val outfile : out_channel = <abstr>
# output_string outfile "Hello, world.";;
- : unit = ()
# output_char outfile '\n';;
- : unit = ()
# close_out outfile;;
- : unit = ()

できたファイル:

^o^ >type foo.txt
Hello, world.

まとめ

  入力 出力
オープン open_in open_out
クローズ close_in close_out
1行ずつ input_line output_string
1文字ずつ input_char output_char
1バイトずつ input_byte output_byte

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください