IO文件
I/O库用于读取和操作Lua中的文件。 Lua中有两种文件操作,即隐式文件描述符和显式文件描述符。
对于以下示例,将使用示例文件 - test.lua,内容如下所示 -
-- sample test.lua
-- sample2 test.lua
Lua
文件打开操作使用以下语句 -
file = io.open (filename [, mode])
下表列出了各种文件模式 -
编号 |
模式 |
描述 |
1 |
r
|
只读模式,是打开现有文件的默认模式。 |
2 |
w
|
写入启用模式,覆盖现有文件或创建新文件。 |
3 |
a
|
附加模式,用于打开现有文件或创建新文件以进行追加。 |
4 |
r+ |
现有文件的读写模式。 |
5 |
w+
|
如果文件存在或创建具有读写权限的新文件,则删除所有现有数据。 |
6 |
a+
|
启用了读取模式的追加模式可打开现有文件或创建新文件。
|
1. 隐式文件描述符隐式文件描述符使用标准输入/输出模式或使用单个输入和单个输出文件。 使用隐式文件描述符的示例如下所示。
-- 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)
Lua
运行程序时,将获得test.lua 文件第一行的输出。执行上面程序,得到以下输出 -
-- Sample test.lua
这是test.lua 文件中声明的第一行。 同时也将"-- End of the test.lua file"这一行附加到test.lua 文件中的最后一行。
在上面的示例中,可以使用io."x"方法查看隐式描述符如何与文件系统一起使用。 上面的示例使用不带可选参数的io.read()方法。可选参数可以是以面中的任何一个。
编号 |
模式 |
描述 |
1 |
*n
|
从当前文件位置读取并返回一个数字(如果存在于文件位置或返回nil)。 |
2 |
*a
|
从当前文件位置返回文件的所有内容。 |
3 |
*l
|
从当前文件位置读取行,并将文件位置移动到下一行。 |
4 |
number
|
读取函数中指定的字节数。 |
其他常见的I/O方法包括,
io.tmpfile() - 返回一个临时文件,用于读取和写入,当程序退出,将删除该文件。io.type(file) - 根据输入文件返回文件,关闭文件或nil。io.flush() - 清除默认输出缓冲区。io.lines(可选文件名) - 提供循环迭代器的通用循环迭代器,循环遍历文件并最终关闭文件,以防提供文件名或使用默认文件而不在循环结束时关闭。
2. 显式文件描述符显式文件描述符经常使用,它允许一次操作多个文件。 这些函数与隐式文件描述符非常相似。 在这里,使用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) - 参数是set,cur或end。 使用文件开头的更新文件位置设置新文件指针。 在此函数中,偏移量为零。 如果第一个参数是set,则从文件的开头测量偏移量; 从文件中的当前位置开始,如果它是cur; 或者从文件的末尾开始,则它是end。 默认参数值为cur和0,因此可以通过不带参数调用此函数来获取当前文件位置。
file:flush() ? 清除默认输出缓冲区。
io.lines(optional file name) - 提供循环迭代器的通用循环迭代器,循环遍历文件并最终关闭文件,以防提供文件名或使用默认文件而不在循环结束时关闭。
使用搜索方法的示例如下所示。它将光标从文件结束前的25个位置偏移。 read函数从搜索位置打印文件的剩余部分。
-- 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
相关文章
- log4net 控制台和文件和数据库输出三种方式
- Java总结:Java 流(Stream)、文件(File)和IO
- 文件基本类型
- ROBOCOPY——Windows 的可靠文件复制
- IO-文件 File 复制 读写 总结
- Linux系统调优详解(十一)——IO调优之文件打开数目限制
- go文件读写功能实现(io/ioutil)及实现shell脚本的调用(os/exec)
- hadoop 使用map将SequenFile里的小文件解压出来
- 部署在SAP ABAP服务器上的SAP UI5应用的JavaScript文件,是如何被SAP UI5 repository handler处理的
- Atitit io读取文件法 目录 1. 文件法1 1.1. 异步读取文件:1 1.2. 2.同步读取方法1 1.3. 二进制读文件:1 2. 读取api规范1 3. Atitit 按照
- Atitit 持久化 Persistence概念的艺术 目录 1. 持久化是将程序数据在持久状态和瞬时状态间转换的机制。1 2. DBC就是一种持久化机制。文件IO也是一种持久化机制。2 3.
- Atitit.跨语言 文件夹与文件的io操作集合 草案
- Atitit..文件上传组件选型and最佳实践总结(3)----断点续传控件的实现
- Error:Execution failed for task ‘:app:transformNative_libsWithStripDebugSymbolForDebug‘.> java.io.IO
- JavaSE进阶 | 深入理解Java IO流(文件专属流)
- Qt .pro文件详解
- 教你如何将二进制文件导入到数据库
- Java实现文件写入——IO流(输入输出流详解)
- 【Android 逆向】APK 文件处理脚本 ApkTool.py ( 脚本简介 | 用法 | 分析 APK 文件 )
- JAVA学习课第五 — IO流程(九)文件分割器合成器
- C#使用System.IO.Path获取文件路径、文件名
- 9.第三章 Linux文件管理和IO重定向 -- 文件操作命令(二)
- 8.第三章 Linux文件管理和IO重定向 -- 文件系统目录结构(一)
- Linux基础命令-chmod修改文件权限
- 28. 如何使用 SAP OData 服务向 ABAP 服务器上传文件
- Java 流(Stream)、文件(File)和IO
- Istio服务网格进阶④:Istio服务网格核心资源YAML编排文件配置清单
- 系统编程(三)文件IO之常用API dup dup2