テキストファイルの読み込み

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 / 関連情報