有些数据是短暂的,存储在 RAM 中,并且仅在应用程序运行时才有意义。 但是,有些数据旨在持久存储,并存储在硬盘驱动器上以供以后使用。 当您进行编程时,无论是处理简单的脚本还是复杂的工具套件,通常都需要读取和写入文件。 每种语言处理此任务的方式都略有不同,本文演示了如何使用 Lua 处理数据文件。
安装 Lua
如果您使用的是 Linux,则可以从发行版的软件存储库中安装 Lua。 在 macOS 上,您可以从 MacPorts 或 Homebrew 安装 Lua。 在 Windows 上,您可以从 Chocolatey 安装 Lua。
安装 Lua 后,打开您喜欢的文本编辑器并准备开始编写代码。
使用 Lua 读取文件
Lua 使用 io
库进行数据输入和输出。 以下示例创建一个名为 ingest
的函数,以从文件中读取数据,然后使用 :read
函数对其进行解析。 在 Lua 中打开文件时,您可以启用多种模式。 因为我只需要从此文件中读取数据,所以使用 r
(表示“读取”)模式
function ingest(file)
local f = io.open(file, "r")
local lines = f:read("*all")
f:close()
return(lines)
end
myfile=ingest("example.txt")
print(myfile)
在代码中,请注意创建了变量 myfile
以触发 ingest
函数,因此,它会接收该函数返回的任何内容。 ingest
函数返回文件的行(来自一个直观地称为 lines
的变量)。 当在最后一步中打印 myfile
变量的内容时,文件的行将显示在终端中。
如果文件 example.txt
包含配置选项,那么我会编写一些额外的代码来解析该数据,可能会使用另一个 Lua 库,具体取决于配置是存储为 INI 文件还是 YAML 文件或其他格式。 如果数据是 SVG 图形,我将编写额外的代码来解析 XML,可能会使用 Lua 的 SVG 库。 换句话说,您的代码读取的数据可以在加载到内存后进行操作,但加载它只需要 io
库。
使用 Lua 将数据写入文件
无论您是存储用户使用应用程序创建的数据,还是仅存储有关用户在应用程序中所做操作的元数据(例如,游戏存档或最近播放的歌曲),都有很多充分的理由来存储数据以供以后使用。 在 Lua 中,可以通过 io
库打开文件、将数据写入其中并关闭文件来实现此目的
function exgest(file)
local f = io.open(file, "a")
io.output(f)
io.write("hello world\n")
io.close(f)
end
exgest("example.txt")
要从文件中读取数据,我以 r
模式打开文件,但这次我使用 a
(表示“追加”)将数据写入文件末尾。 因为我将纯文本写入文件,所以我添加了自己的换行符 (\n
)。 通常,您不会将原始文本写入文件,并且可能会使用其他库来写入特定格式。 例如,您可以使用 INI 或 YAML 库来帮助写入配置文件,使用 XML 库来写入 XML,依此类推。
文件模式
在 Lua 中打开文件时,有一些安全措施和参数可以定义文件的处理方式。 默认值为 r
,它仅允许您读取数据
- r 只读
- w 覆盖或创建新文件(如果该文件尚不存在)
- r+ 读取和覆盖
- a 将数据附加到文件或创建新文件(如果该文件尚不存在)
- a+ 读取数据、将数据附加到文件或创建新文件(如果该文件尚不存在)
还有一些其他的(例如,b
用于二进制格式),但这些是最常见的。 有关完整的文档,请参阅 Lua.org/manual 上的出色 Lua 文档。
Lua 和文件
与其他编程语言一样,Lua 具有丰富的库支持来访问文件系统以读取和写入数据。 由于 Lua 具有一致且简单的语法,因此很容易对任何格式的文件中的数据执行复杂的处理。 尝试将 Lua 用于您的下一个软件项目,或将其用作 C 或 C++ 项目的 API。
评论已关闭。