LuaSTG-x Core API
|
Public Member Functions | |
static function | close (local file) |
static function | flush () |
static function | input (local file) |
static function | lines (local filename, local ...) |
static function | open (local filename, local mode) |
static function | output (local file) |
static function | popen (local prog, local mode) |
static function | read (local ...) |
static function | tmpfile () |
static function | type (local obj) |
static function | write (local ...) |
Public Attributes | |
file | stderr |
file | stdin |
file | stdout |
I/O 库提供了两套不同风格的文件处理接口。
第一种风格使用隐式的文件句柄;
它提供设置默认输入文件及默认输出文件的操作,
所有的输入输出操作都针对这些默认文件。
第二种风格使用显式的文件句柄。
当使用隐式文件句柄时,所有的操作都由表 io
提供。
若使用显式文件句柄, io.open
会返回一个文件句柄,
且所有的操作都由该文件句柄的方法来提供。
表 io
中也提供了三个和 C 中含义相同的预定义文件句柄:
io.stdin
, io.stdout
, io.stderr
。I/O 库永远不会关闭这些文件。
除非另有说明,I/O 函数在出错时都返回 nil
(第二个返回值为错误消息,第三个返回值为系统相关的错误码)。
成功时返回与 nil 不同的值。
在非 POSIX 系统上,根据错误码取出错误消息的过程可能并非线程安全的,
因为这使用了 C 的全局变量 errno
。
static function flush | ( | ) |
等价于 io.output():flush()
。
用文件名调用它时,(以文本模式)来打开该名字的文件,
并将文件句柄设为默认输入文件。
如果用文件句柄去调用它,
就简单的将该句柄设为默认输入文件。
如果调用时不传参数,它返回当前的默认输入文件。
在出错的情况下,函数抛出错误而不是返回错误码。
file | file |
以读模式打开指定的文件名并返回一个迭代函数。
此迭代函数的工作方式和用一个已打开的文件去调用
file:lines(...)
得到的迭代器相同。
当迭代函数检测到文件结束,
它不返回值(让循环结束)并自动关闭文件。
调用 io.lines()
(不传文件名)
等价于 io.input():lines("*l")
;
即,它将按行迭代标准输入文件。
在此情况下,循环结束后它不会关闭文件。
在出错的情况下,函数抛出错误而不是返回错误码。
filename | string |
这个函数用字符串 mode
指定的模式打开一个文件。
返回新的文件句柄。
当出错时,返回 nil 加错误消息。
mode
字符串可以是下列任意值:
**"r"** : 读模式(默认);
**"w"** : 写模式;
**"a"** : 追加模式;
**"r+"** : 更新模式,所有之前的数据都保留;
**"w+"** : 更新模式,所有之前的数据都删除;
**"a+"** : 追加更新模式,所有之前的数据都保留,只允许在文件尾部做写入。
mode
字符串可以在最后加一个 'b
' ,
这会在某些系统上以二进制方式打开文件。
filename | string |
mode | string |
这个函数和系统有关,不是所有的平台都提供。
用一个分离进程开启程序 prog
,
返回的文件句柄可用于从这个程序中读取数据
(如果 mode
为 "r"
,这是默认值)
或是向这个程序写入输入(当
mode
为 "w"
时)。
prog | file |
mode | string |
等价于 io.input():read(...)
。
static function tmpfile | ( | ) |
如果成功,返回一个临时文件的句柄。
这个文件以更新模式打开,在程序结束时会自动删除。
检查 obj
是否是合法的文件句柄。
如果 obj
它是一个打开的文件句柄,返回字符串 "file"
。
如果 obj
是一个关闭的文件句柄,返回字符串 "closed file"
。
如果 obj
不是文件句柄,返回 nil 。
obj | string|file |
等价于 io.output():write(...)
。