Lua:
テキストファイルの読み込み
How to / 方法
-- ファイルのオープン
local file = io.open("sample.txt", "r")
-- 内容の読み取り
local content = file:read("*a")
-- 表示
print(content)
-- ファイルのクローズ
file:close()
出力例:
こんにちは、Luaの世界へようこそ!
エラー処理を含む安全な読み込み:
local function readFile(path)
local file, err = io.open(path, "r")
if not file then
return nil, err -- エラーを返す
end
local content = file:read("*a")
file:close()
return content, nil -- 成功時には内容を返す
end
local content, err = readFile("sample.txt")
if err then
print("読み込みエラー:", err)
else
print(content)
end
Deep Dive / 詳細情報
Luaでのファイル入出力は、もともと5.0からの標準ライブラリio
で提供されています。read("*a")
ではファイル全体を読み込みます。他にもread("*l")
(1行読み込み)やread(num)
(numバイト読み込み)があります。
io.open
は二つの値を返します: ファイルハンドルとエラーメッセージ。エラー処理は、返されるエラーメッセージで行うべきです。Luaには自動クローズはないため、file:close()
を呼び出して、リソースリークを防ぐことが大事です。
バイナリファイルの読み込みには、テキストモード"r"
の代わりに"rb"
を使います。バッファリングの制御や低レベル入出力が必要なら、標準ライブラリのio
よりもfile
モジュールを用います。
See Also / 関連情報
- Lua公式マニュアル: read関数
- エラー処理: ピルエルア (PIL) – エラー処理と例外