无涯教程-Lua - 文件I/O

这篇具有很好参考价值的文章主要介绍了无涯教程-Lua - 文件I/O。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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文章来源地址https://www.toymoban.com/news/detail-631459.html

到了这里,关于无涯教程-Lua - 文件I/O的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 无涯教程-Lua - 变量声明

    变量的名称可以由字母,数字和下划线字符组成。它必须以字母或下划线开头,由于Lua区分大小写,因此大写和小写字母是不同的。 在Lua中,尽管无涯教程没有变量数据类型,但是根据变量的范围有三种类型。 全局变量(Global)     - 除非明确声明为局部变量,否则所有变量

    2024年02月14日
    浏览(46)
  • 无涯教程-Lua - Arrays(数组)

    数组是对象的有序排列,可以是包含行集合的一维数组,也可以是包含多行和多列的多维数组。 在Lua中,数组是使用带有整数的索引表实现的。数组的大小不是固定的,并且可以根据无涯教程的要求(取决于内存限制)来增长。 一维数组可以使用简单的表结构表示,并且可以使

    2024年02月14日
    浏览(36)
  • 无涯教程-Lua - Modules(模块)

    模块就像可以使用 require 加载的库,并且具有包含 Table 的单个全局名称,该模块可以包含许多函数和变量。 其中一些模块示例如下。 让无涯教程考虑一个简单的示例,其中一个函数具有数学函数。将此模块称为mymath,文件名为mymath.lua。文件内容如下- 现在,为了在另一个文

    2024年02月14日
    浏览(40)
  • 无涯教程-Lua - for语句函数

    for 循环是一种重复控制结构,可让您有效地编写需要执行特定次数的循环。 Lua编程语言中 for 循环的语法如下- 这是 for 循环中的控制流程- 首先执行 init 步骤,并且仅执行一次。此步骤使您可以声明和初始化任何循环控制变量。 接下来是max/min。这是循环继续执行之前的最大

    2024年02月14日
    浏览(38)
  • 无涯教程-Lua - while语句函数

    只要给定条件为真,Lua编程语言中的 while 循环语句就会重复执行目标语句。 Lua编程语言中 while 循环的语法如下- 在这里,需要注意的关键是 while 循环可能根本不执行。当测试条件并且输出为false时,将跳过循环主体,并执行 while 循环之后的第一条语句。 构建并执行上述代码

    2024年02月14日
    浏览(40)
  • 无涯教程-Lua - Iterators(迭代器)

    迭代器是一种构造,使您可以遍历所谓的集合或集合的元素。在Lua中,这些集合通常引用表,这些表用于创建各种数据结构(如数组)。 通用的 for 迭代器提供集合中每个元素的键值对。下面给出一个简单的示例。 当无涯教程运行上面的代码时,将获得以下输出- 上面的示例使

    2024年02月14日
    浏览(39)
  • 无涯教程-Lua - nested语句函数

    Lua编程语言允许在另一个循环中使用一个循环。以下部分显示了一些示例来说明这一概念。 Lua中嵌套for循环语句的语法如下- Lua编程语言中的嵌套while循环语句的语法如下- Lua编程语言中的嵌套重复...直到循环语句的语法如下- 关于循环嵌套的最后一点是,您可以将任何类型的

    2024年02月14日
    浏览(36)
  • 无涯教程-Lua - 嵌套if语句函数

    在Lua编程中,您可以在另一个 if or else if 语句中使用一个 if or else if 语句。 嵌套if 语句的语法如下- 您可以像嵌套 if 语句一样,嵌套 else if ... else 。 当您构建并运行以上代码时,它将产生以下输出。 Lua 中的 嵌套if语句函数 - 无涯教程网 无涯教程网提供在Lua编程中,您可以

    2024年02月14日
    浏览(41)
  • 【Lua】Lua包管理器-LuaRocks的使用教程

    lua的包管理工具是: LuaRocks 。本文内容基于 MacOS 系统。 参考官方文档:Using LuaRocks 可用的模块在luarocks官网搜索即可。例如现在我们安装一个 luasocket 模块。 注意 :不知道是 luarocks 故意为之,还是因为有 bug 。在 luarocks 的安装目录(以及任意子目录)执行 luarocks 命令,和在其

    2024年02月14日
    浏览(33)
  • Lua之Lua源文件批量转换为luac字节码文件

    准备的工具:luac.exe  CSDN https://mp.csdn.net/mp_download/manage/download/UpDetailed Unity版:

    2024年02月11日
    浏览(37)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包