メインコンテンツへ移動

ファイルを行の配列として読み取る (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, "行")