ファイルを行の配列として読み取る (LCC.web_file.get_lines)
宣言
lines, err = LCC.web_file.get_lines(path, timeout?)
引数
- path
文字列。読み取るファイルのパスです - timeout
任意の数値。リクエストのタイムアウト(秒)です。既定値は60です
戻り値
- lines
テーブル。ファイル内容を行単位で構成した配列です(改行コードは\nに統一)。失敗時はnilになります - err
文字列またはnil。失敗時のエラー説明です
説明
ファイルの全内容を読み取り、行ごとの配列に分割します。
読み取り前に\r\nを\nへ統一します。
読み取りと書き込みの組み合わせ
ファイルが改行で終わる場合、get_lines は末尾の分割で生じた空文字列を保持します。例えば、2 行のテキスト "A\nB\n" は {"A", "B", ""} を返します。この配列を set_range_lines(path, 1, lines) に渡すと、末尾の空行を含む 3 行が書き込まれます。
行番号を指定して内容を読み取り、置換する場合は、get_range_lines と set_range_lines を組み合わせてください。ファイル全体を読み取り、変更して上書きする場合は、get_lines と set_lines を組み合わせてください。set_lines はファイル全体を上書きするため、一部だけの置換には適していません。
どちらの組み合わせでも、読み取りと書き込みは別々のリクエストであり、読み取り、変更、書き戻しの一連の処理はアトミックではありません。同時に書き込みが行われる場合は、読み取り後の変更を上書きしないよう、アクセスを調整してください。
例
local lines, err = LCC.web_file.get_lines("/設定/list.txt")
if not lines then
error(err)
end
print("合計", #lines, "行")