Latest web development tutorials

LuaのファイルI / O

LuaのI /読み込みと処理ファイル用のOライブラリ。 単純なパターン(Cなど)、フルモードに分け。

  • 単純なモード(簡易モデル)が現在の入力ファイルと現在の出力ファイルがあり、これらのファイル関連操作を提供します。
  • 達成するために、外部のファイルハンドルを使用して、フルモード(完全なモデル)。 これは、オブジェクトの形で顔である、すべてのファイル操作は、ファイルハンドルのメソッドとして定義されます

ときに、より適切な簡単なモードでは、いくつかの簡単なファイル操作を行うには。 しかし、いくつかの先進的なファイル操作の後に、単純なモデルでは不十分であるように思われました。 この操作を複数のファイルを読んでいる間たとえば、フルモードがより適して使用します。

次のように開いているファイル操作文は次のとおりです。

file = io.open (filename [, mode])

値モードは次のとおりです。

モード 説明
R 読み取り専用ファイルを開いた、ファイルが存在している必要があります。
ワット ファイルが存在する場合、ファイルの長さは、つまり、ファイルの内容が消え、0にクリアされ、書き込み専用ファイルを開きます。 ファイルが存在しない場合、ファイルを作成します。
A 追加の書き込み専用のファイルで開かれます。 ファイルが存在しない場合、ファイルが存在する場合、ファイルの確立は、書き込みデータがファイルの末尾に追加され、元のファイルの内容が保持されます。 (EOF文字は予約済み)
R + 両方の読み取りとファイルを開くために書いて、ファイルが存在している必要があります。
ワット+ ファイルが存在する場合、ファイルの内容が消えてしまうことを、ゼロクリアのファイルの長さファイルを読み書きするために開きます。 ファイルが存在しない場合、ファイルを作成します。
+ そして、似ていますが、このファイルは読み取りおよび書き込み可能です
B ファイルがバイナリファイルの場合、バイナリモード、ときに、bを追加することができます
+ サインは、ファイルが読み書きできるのいずれかを示しています

簡易モード

標準I / Oまたは現在の入力ファイルを使用して、現在の出力ファイルを使用して、単純なモード。

次のように次は、file.luaファイルコード、ファイル操作test.lua(あなたがファイルを作成する必要がない場合)です。

-- 以只读方式打开文件
file = io.open("test.lua", "r")

-- 设置默认输入文件为 test.lua
io.input(file)

-- 输出文件第一行
print(io.read())

-- 关闭打开的文件
io.close(file)

-- 以附加的方式打开只写文件
file = io.open("test.lua", "a")

-- 设置默认输出文件为 test.lua
io.output(file)

-- 在文件最后一行添加 Lua 注释
io.write("--  test.lua 文件末尾注释")

-- 关闭打开的文件
io.close(file)

上記のコードの実装は、ファイル内の情報test.ua出力ファイルと最後の行の最初の行は、LUAコメントを追加していることがわかります。 出力があるように私はここにいます:

-- test.lua 文件

我々はioの「x」は、前記io.readを()使用上の例では、我々はパラメータを持っていない、パラメータは次の表のいずれかになります。

モード 説明
"* N" 番号を読み取り、それを返されます。 例:file.read( "* nの")
"*のA" 現在の場所からファイル全体をお読みください。 例:file.read( "*のA」)
"*のL"(デフォルト) nilを返す時にファイル(EOF)の終わりに次の行を読み込みます。 例:file.read( "*のL")
文字列で指定された数の文字を返し、またはEOFはnilを返すとき。 例:file.read(5)

その他のIOメソッドは次のとおりです。

  • io.tmpfile():ときにプログラムが終了し、自動的に削除されたファイルを更新モードで開かれ、一時ファイルへのハンドルを返します。

  • io.type(ファイル):OBJファイルが利用可能ハンドルかどうかを検出

  • io.flush():書き込むファイルにすべてのデータをバッファリング

  • io.lines(オプションのファイル名):ファイルの終わりに、それはnilを返しますときに、各コールは、ファイル内の行を取得します、イテレータ関数を返しますが、ファイルを閉じません


フルモード

通常、私たちは、同時に複数のファイルに対処する必要があります。 FUNCTION_NAME代わりにio.function_name方法:我々は、ファイルを使用する必要があります。 次の例では、同じ時間に同じファイルを示しています。

-- 以只读方式打开文件
file = io.open("test.lua", "r")

-- 输出文件第一行
print(file:read())

-- 关闭打开的文件
file:close()

-- 以附加的方式打开只写文件
file = io.open("test.lua", "a")

-- 在文件最后一行添加 Lua 注释
file:write("--test")

-- 关闭打开的文件
file:close()

上記のコードの実装は、ファイル内の情報test.ua出力ファイルと最後の行の最初の行は、LUAコメントを追加していることがわかります。 出力があるように私はここにいます:

-- test.lua 文件

シンプルモードと一致してパラメータを読み込みます。

その他の方法:

  • ファイル:シーク(オプションそこには、任意のオフセット):設定され、現在のファイル位置を取得し、成功は、(バイト単位)、最終的なファイル位置を返し、nilを失敗プラスエラー・メッセージが返されます。そこからパラメータ値を指定できます。

    • 「設定」:ファイルの先頭から
    • 「CUR」:現在の位置から、[デフォルト]
    • 「終了」:ファイルの終わりから始まります
    • オフセット:デフォルトは0です
    パラメータファイルがない:シーク()現在の位置を返し、ファイル:(「設定」)シークはファイルヘッダを標的とする、ファイル:ファイルの終わりを検索する(「終了」)を追求し、ファイルサイズを返します。
  • ファイル:フラッシュ():ファイルにすべてのデータをライトバッファ

  • io.lines(オプションのファイル名):指定したファイルのファイル名の読み出しモードを開いて、イテレータ関数を返す、各呼び出しは、ファイルの終わりには、それがnilを返すと、自動的にファイルを閉じますとき、ラインを提出します。
    ベルトパラメータio.lines()<=> io.input()場合は、次の行();デフォルトの入力デバイスは、内容を読むには、結局は、次のような、ファイルを閉じません

    for line in io.lines("main.lua") do
    
      print(line)
    
      end
    

次の例では、ファイルの最後から二番目の位置25を見つけて、パラメータは、現在の場所(最後から2番目の位置25)からファイル全体を読み込む* readメソッドを使用する方法を求めて使用しています。

-- 以只读方式打开文件
file = io.open("test.lua", "r")

file:seek("end",-25)
print(file:read("*a"))

-- 关闭打开的文件
file:close()

私の結果は、ここで出力されます。

st.lua 文件末尾--test