parrotcode: Lua Input/Output Library | |
Contents | Language Implementations | Lua |
lib/luaio.pir - Lua Input/Output Library
The I/O library provides two different styles for file manipulation. The first one uses implicit file descriptors, that is, there are operations to set a default input file and a default output file, and all input/output operations are over those default files. The second style uses explicit file descriptors.
When using implicit file descriptors,
all operations are supplied by table io
.
When using explicit file descriptors,
the operation io.open
returns a file descriptor and then all operations are supplied as methods by the file descriptor.
The table io
also provides three predefined file descriptors with their usual meanings from C: io.stdin
,
io.stdout
,
and io.stderr
.
Unless otherwise stated, all I/O functions return nil on failure (plus an error message as a second result) and some value different from nil on success.
See "Lua 5.1 Reference Manual", section 5.7 "Input and Ouput Facilities".
io.close ([file])
file:close()
.
Without a file
,
closes the default output file.io.flush ()
file:flush
over the default output file.io.input ([file])
io.lines ([filename])
for line in io.lines(filename) do ... end
io.lines()
(without a file name) is equivalent to io.input():lines()
, that is, it iterates over the lines of the default input file. In this case it does not close the file when the loop ends.io.open (filename [, mode])
mode
. It returns a new file handle, or, in case of errors, nil plus an error message.mode
string can be any of the following:mode
string may also have a b
at the end, which is needed in some systems to open the file in binary mode. This string is exactly what is used in the standard C function fopen
.io.output ([file])
io.input
, but operates over the default output file.io.popen ([prog [, mode]])
prog
in a separated process and returns a file handle that you can use to read data from this program (if mode
is "r"
, the default) or to write data to this program (if mode
is "w"
).io.read (format1, ...)
io.input():read
.io.tmpfile ()
io.type (obj)
obj
is a valid file handle. Returns the string "file"
if obj
is an open file handle, "closed file"
if obj
is a closed file handle, and nil if obj
is not a file handle.io.write (value1, ...)
io.output():write
.file:close ()
file
. Note that files are automatically closed when their handles are garbage collected, but that takes an unpredictable amount of time to happen.file:flush ()
file
.file:lines ()
for line in file:lines() do ... end
io.lines
, this function does not close the file when the loop ends.)file:read (format1, ...)
file
, according to the given formats, which specify what to read. For each format, the function returns a string (or a number) with the characters read, or nil if it cannot read data with the specified format. When called without formats, it uses a default format that reads the entire next line (see below).file:seek ([whence] [, offset])
offset
plus a base specified by the string whence
, as follows:seek
returns the final file position, measured in bytes from the beginning of the file. If this function fails, it returns nil, plus a string describing the error.whence
is "cur"
, and for offset
is 0. Therefore, the call file:seek()
returns the current file position, without changing it; the call file:seek("set")
sets the position to the beginning of the file (and returns 0); and the call file:seek("end")
sets the position to the end of the file, and returns its size.file:setvbuf (mode [, size])
file:write (value1, ...)
file
. The arguments must be strings or numbers. To write other values, use tostring
or string.format
before write.Francois Perrad.
|