lua io函数

io

io库提供两种io操作风格。第一种使用隐含的文件描述符,有操作设置默认的
输入文件和输出文件。第二种是明确的文件描述符。当使用明确风格时,所有的
操作由表io提供。|io.open|返回文件描述符和它们的操纵方法。
表io也提供3个于定义的文件描述符io.stdin,io.stdout,io.stderr。I/O库绝不
会关闭这些文件。
I/O函数在出错时返回nil(加一个错误消息和一个系统依赖代码)。

io.stderr 标准错误输出
io.stdin 标准输入
io.stdout 标准输出

io.close ([file])

等价于|file:close|。没有给出file关闭默认输出文件。

io.flush ()

等价于|io.output():flush()|。

io.input ([file])

当使用文件名file调用该函数,它以文本模式打开该文件。并且设置文件句柄为默认输入。
当不使用参数调用时它返回默认输入文件。
在函数出错时提升错误,返回一个错误代码。

io.lines ([filename…])

打开一个filename文件进入读取模式,返回一个iterator函数,工作类似于|file:lines|。
当iterator函数侦测到文件的结尾,函数返回nil并且自动关闭文件。
不带参数调用|io.lines|等价于io.input():lines();iterator遍历默认输入文件的全部行。
在这种情况下循环结束不关闭文件。
在函数出错时提升错误,返回一个错误代码。

io.open (filename[,mode])

这个函数打开一个filename文件,mode可以指定一个模式字符串。函数返回文件句柄,或者
发生错误返回nil加一个错误消息。
mode字符串可以是下面的一个
“r” 读模式(默认)
“w” 写模式
“a” 追加模式
“r+” 更新模式,所有以前的数据保留。
“w+” 更新模式,所有一起的数据删除。
“a+” 追加更新模式,以前的数据保留,仅仅可以在文件尾部写入。
模式字符串也能加入一个字符’b’在结尾,这在一些系统中打开二进制模式。

io.output ([file])

类似于|io.input|,但是操作覆盖默认输出文件。

io.popen (prog[,mode])

函数依赖于具体的系统支持,不是所有的系统都可用。
开始程序prog在隔离进程中返回一个文件的句柄,你能使用这个文件句柄读取程序的数据。
(如果mode是”r”,默认)或者写入数据给程序(如果mode是”w”)。

io.read (…)

等价于io.input():read(…)。 |io.input|

io.tmpfile ()

返回一个临时文件句柄。这个文件打开在更新模式并且在程序结束时被自动关闭。

io.type (obj)

检测obj是否是一个可用的文件句柄。如果obj是一个打开的文件句柄,返回一个字符串”file”。
如果obj是一个关闭的文件句柄返回字符串”closed file”。
或者如果obj不是一个文件句柄返回nil。

io.write (…)

等价于io.output():write(…) 参考|io.output|

file

file:close ()

关闭文件。注意文件将自动关闭当它的句柄是被垃圾回收时。
当关闭一个由io.popen打开的文件时,|file:close|返回和|os.execute|相同的值。

file:flush ()

保存已经写入的数据到文件里。

file:lines (…)

返回一个iterator函数,每次调用该函数,读取文件使用给定的格式。当没有格式给定时,
使用”**l”作为默认。
for c in file:lines(1) do body end

这将遍历文件全部的字符,开始在当前位置。不像|io.lines|,这个函数不关闭文件在循环
结束时。
在函数出错时提升错误,返回一个错误代码。

file:read (…)

读取文件,根据给定的格式确定如何读取。没种格式函数返回读取的一个字符串或者数值。
或者如果不能读取数据返回nil。当调用不使用任何格式时函数默认格式是读取下一行。
可用的可是有:
“*n” 读取一个数值,这种格式返回一个数。
“*a” 读取全部文件,从当前位置开始。在文件结尾它返回空字符串。
“*l” 跳过行尾读取下一行,在文件结尾返回nil。这是默认格式
“*L” 同上
number 读取给定数量的字节,在文件结尾时返回nil。如何number等于0,返回
一个空的字符串。

file:seek ([whence[,offset]])

设置或者取得文件的当前位置(读取或写入位置),当前位置设置为offset加上基准位置base。
base由whence指定,可以是下面的值:
“set” 开始位置0(文件的开始)
“cur” 当前位置
“end” 文件的结尾位置
操作成功seek返回文件的当前位置,数值是从文件开始到当前的字节数。如果seek失败,返回
nil加一个错误信息字串。
默认whence值是”cur”,offset默认是0。因此调用file:seeok()返回当前位置,不改变当前位置
file:seek(“set”)设置当前位置为文件的开始并且返回0,而调用file:seek(“end”)设置当
位置为文件的结尾,并且返回文件尺寸。

file:setvbuf (mode[,size])

设置输出文件的缓冲区模式。这里有三种可能的模式:
“no” 没有缓冲,输出结果立刻执行。
“full” 完全缓冲,输出操作是执行仅当缓冲满或者你明确的调用|file:flush|
“line” 行缓冲,有新行写入执行输出操作。
最后两种方式size指定缓冲区大小,单位是字节,默认指定一个恰当的尺寸。

file:write (…)

写入每一参数到文件中。参数必须是字符串或者数值。
成功函数返回文件,其他情况返回nil加一个错误信息字符串。

你可能感兴趣的:(lua)