この初版はLua5.0向けに書かれました。そのほとんどは後発のバージョンにも関連していますが、いくつかの違いがあります。
四版目はLua5.3を対象としており、Amazonやその他の書店で購入できます。
書籍を購入することで、Luaプロジェクトを支援できます。
![]() |
LuaでのプログラミングLua | ![]() |
第III部標準ライブラリ 第21章I/Oライブラリ |
さらに制御されたI/Oを使用するには、完全なモデルを使用できます。このモデルの中心概念はファイルハンドルであり、C言語のストリーム(FILE*
)に相当します。現在の位置を持つ開かれたファイルを表現します。
ファイルをオープンするには、C言語のfopen
関数に似たio.open
関数を用います。引数として、オープンするファイル名とモード文字列を受け取ります。モード文字列には、読み込み用の`r
´、書き込み用の`w
´(ファイルの以前の内容が消去されます)、追加用の`a
´が含まれます。オプションの`b
´を付加するとバイナリファイルを開くことができます。open
関数はファイルの新しいハンドルを返します。エラーが発生した場合、open
はnilとエラーメッセージ、エラー番号を返します。
print(io.open("non-existent file", "r")) --> nil No such file or directory 2 print(io.open("/etc/passwd", "w")) --> nil Permission denied 13エラー番号の解釈は、システム依存です。
エラーをチェックする広義的な反復は次のとおりです。
local f = assert(io.open(filename, mode))
open
に失敗した場合、エラーメッセージはassert
の第二引数となり、次にメッセージが表示されます。ファイルをオープンした後、read
/write
メソッドを使用してファイルをリードしたり、ファイルに書き込んだりできます。メソッドはread
/write
関数に似ていますが、コロン記号を使用してファイルハンドルのメソッドとして呼び出します。例えば、ファイルを開いてすべてをリードするには、以下のようなチャンクを使用できます。
local f = assert(io.open(filename, "r")) local t = f:read("*all") f:close()
I/Oライブラリはまた、あらかじめ定義された3つのCストリーム、io.stdin
、io.stdout
、io.stderr
のハンドルも提供します。このようにして、次のコードのようにエラーストリームに直接メッセージを送信できます。
io.stderr:write(message)
完全なモデルと単純なモデルを混在させることができます。引数なしでio.input()
を呼び出すことで、現在の入力ファイルハンドルを取得できます。io.input(handle)
の呼び出しで、現在の入力ファイルハンドルを設定します。(同じ呼び出しはio.output
にも有効です)。例えば、一時的に現在の入力ファイルを変更する場合、次のように記述できます。
local temp = io.input() -- save current file io.input("newinput") -- open a new current file ... -- do something with new input io.input():close() -- close current file io.input(temp) -- restore previous current file
著作権 © 2003–2004 Roberto Ierusalimschy. すべての権利を保有します。 | ![]() |