简单模式和完全模式
- 简单模式(simple model)拥有一个当前输入文件和一个当前输出文件,并且提供针对这些文件相关的操作。
- 完全模式(complete model) 使用外部的文件句柄来实现。它以一种面对对象的形式,将所有的文件操作定义为文件句柄的方法。
打开文件
1 | file = io.open(filename [, mode]) |
mode 选项
模式 | 简介 |
---|---|
r | 只读,文件必须存在。默认。 |
w | 只写,文件存在,则写入时覆盖原有内容。文件不存在,则创建文件。 |
a | 附加写入,文件存在,则从文件末尾写入。文件不存在,则创建文件。 |
b | 二进制模式,与r/w/a结合使用。 |
+ | 表示文件可读写,与r/w/a结合使用。 |
1 | file01 = io.open("test.lua", "r") |
从文件读取数据
1 |
|
向文件写入数据
1 |
|
关闭文件
1 | file01 = io.open("test.lua", "r") |
方法
简单模式,io的方法
调用方式:io.方法名()。如:io.read()
- read()
输入文件一行数据,并把游标指向下一行开始地址。
参数:
参数 | 说明 |
---|---|
“*l” | 读取下一行,在文件尾 (EOF) 处返回 nil。默认。 |
“*n” | 读取一个数字并返回它。 |
“*a” | 从当前位置读取整个文件。 |
number | 返回一个指定字符个数的字符串,或在 EOF 时返回 nil。 |
- tmpfile()
返回一个临时文件句柄,该文件以更新模式(附加)打开,程序结束时自动删除。
- type(file)
检测file是否一个可用的文件句柄。
- flush()
向文件写入缓冲中的所有数据。
- lines(optional filename)
打开指定的文件filename为只读模式并返回一个迭代函数,每次调用将获得文件中的一行内容,当到文件尾时,将返回nil,并自动关闭文件。
若不带参数时io.lines() io.input():lines(); 读取默认输入设备的内容,但结束时不关闭文件
完全模式,文件句柄的方法
调用方式:文件句柄:方法名()。如:file:read()。
- read()
作用和参数与简单模式一致。
- seek(optional whence, optional offset)
设置和获取当前文件位置,成功则返回最终的文件位置(按字节),失败则返回nil加错误信息。
参数 whence 取值:
值 | 说明 |
---|---|
“cur” | 从当前位置开始。默认 |
“set” | 从文件头开始 |
“end” | 从文件尾开始 |
offset,偏移量,默认为0。
不带参数file:seek()则返回当前位置。
file:seek(“set”)则定位到文件头。
file:seek(“end”)则定位到文件尾并返回文件大小。
- flush()
向文件写入缓冲中的所有数据。