I/O库用于在Lua中读取和处理文件。 Lua中有两种文件操作,即隐式(Implicit)和显式(Explicit)操作。
对于以下示例,无涯教程将使用例文件test.lua,如下所示。
-- sample test.lua -- sample2 test.lua
一个简单的文件打开操作使用以下语句。
file=io.open (filename [, mode])
下表列出了各种文件模式。
Sr.No. | Mode & Remark |
---|---|
1 | " r" 只读模式,是打开现有文件的默认模式。 |
2 | " w" 启用写模式,该模式将覆盖现有文件或创建新文件。 |
3 | " a" 追加模式,用于打开现有文件或创建要追加的新文件。 |
4 | " r +" 现有文件的读写模式。 |
5 | " w +" 如果文件存在或具有读写权限的新文件被删除,则所有现有数据都将被删除。 |
6 | " a +" 启用了读取模式的追加模式可以打开现有文件或创建新文件。 |
隐式操作
隐式(Implicit)文件描述符使用标准输入/输出模式,或使用单个输入和单个输出文件。下面显示了使用隐式文件描述符的示例。
-- Opens a file in read file=io.open("test.lua", "r") -- sets the default input file as test.lua io.input(file) -- prints the first line of the file print(io.read()) -- closes the open file io.close(file) -- Opens a file in append mode file=io.open("test.lua", "a") -- sets the default output file as test.lua io.output(file) -- appends a word test to the last line of the file io.write("-- End of the test.lua file") -- closes the open file io.close(file)
运行该程序时,将获得test.lua文件第一行的输出。
-- Sample test.lua
这是test.lua文件中语句的第一行。同样,"-test.lua文件的结尾"行将附加到test.lua代码的最后一行。
在上面的示例中,您可以看到使用io。上面的示例使用不带可选参数的io.read()。可选参数可以是以下任意一个。
Sr.No. | Mode & Remark |
---|---|
1 | " * n" 从当前文件位置读取并返回一个数字(如果文件位置存在)或返回nil。 |
2 | " * a" 从当前文件位置返回文件的所有内容。 |
3 | " * l" 从当前文件位置读取该行,并将文件位置移至下一行。 |
4 | number 读取函数中指定的字节数。 |
其他常见的I/O方法包括
io.tmpfile() - 返回用于读取和写入的临时文件,一旦程序退出,该文件将被删除。
io.type(file) - 根据输入文件返回file,close file还是nil。
io.flush() - 清除默认输出缓冲区。
io.lines(optional file name) - 提供通用的 for 循环迭代器,循环遍历文件并最终关闭文件,以防万一在循环末尾提供了文件名未关闭该文件。
显式操作
无涯教程经常使用显式(Explicit)文件描述符,该描述符允许一次处理多个文件。这些函数与隐式文件描述符非常相似。在这里使用file:function_name而不是io.function_name。下面显示了相同隐式文件描述符示例的文件版本的以下示例。
-- Opens a file in read mode file=io.open("test.lua", "r") -- prints the first line of the file print(file:read()) -- closes the opened file file:close() -- Opens a file in append mode file=io.open("test.lua", "a") -- appends a word test to the last line of the file file:write("--test") -- closes the open file file:close()
运行程序时,您将得到与隐式描述符示例类似的输出。
-- Sample test.lua
外部描述符的所有文件打开模式和参数读取方式与隐式文件描述符相同。
其他常见的文件方法包括
file:seek(optional whence,optional offset) - whence参数为" set"," cur"或" end"。从文件开头设置具有更新文件位置的新文件指针。该函数的偏移量从零开始。如果第一个参数为" set",则从文件开头开始偏移;如果它是" cur";或从文件末尾开始(如果是" end")。默认参数值为" cur"和0,因此可以通过不带参数调用此函数来获取当前文件位置。
file:flush() - 清除默认输出缓冲区。
io.lines(optional file name) - 提供 for 循环迭代器,循环遍历文件并最终关闭文件,以防万一在循环末尾提供了文件名未关闭该文件。
下面显示了使用seek方法的示例。它使光标从文件结尾之前的25个位置偏移。读取函数从搜索位置打印文件的其余部分。
-- Opens a file in read file=io.open("test.lua", "r") file:seek("end",-25) print(file:read("*a")) -- closes the opened file file:close()
您将获得类似于以下内容的输出。
sample2 test.lua --test
您可以试玩所有不同的模式和参数,以了解Lua文件操作的全部函数。
Lua - 文件I/O - 无涯教程网无涯教程网提供I/O库用于在Lua中读取和处理文件。 Lua中有两种文件操作,即隐式(Implicit )和显式(Ex...https://www.learnfk.com/lua/lua-file-io.html