Lua I/O库(二)
来源:互联网 发布:网络服务器机柜厂家 编辑:程序博客网 时间:2024/06/06 05:52
Lua中本身对文件所提供的操作,主要包含在I/O库中,该库以.io字段的方式存储在全局的_G表中,遍历打印_G.io即可获取对应库所提供的文件操作的API函数。
io.lines([filename])
--->以读模式打开指定的filename文件,并返回一个迭代函数,每次调用将获得文件中的一行内容,当到文件尾时,将返回nil,并自动关闭文件。
若不带参数时io.lines() <=> io.input():lines(); 读取默认输入设备的内容,但结束时不关闭文件。
{
迭代函数:
内部维护了一个闭合函数和变量var,每次调用时var值+1,同时产生并返回一个新的闭合函数,在闭合函数中通过变量var索引table中的元素达到操作table表元素的目的,闭合函数中也可以处理其他的功能逻辑。
}
file:lines()
--->返回一个迭代器函数,每次调用将获得文件中的一行内容,当到文件尾时将返回nil,但不关闭文件。
io.write(...)
file:write(...)
--->函数功能同上,此时写入的目标文件是当前操作的file句柄所打开引用的文件,按指定的参数格式输出文件内容,参数必须为字符或数字,若要输出其它值,则需通过tostring或string.format进行转换。
io.close([filename])
--->不给出文件时,关闭默认的输出文件。
file:close()
--->关闭文件句柄关联的对应的输出文件。文件在句柄被垃圾回收时会自动关闭, 多久以后关闭是不可预期的。
io.flush()
--->输出所有缓冲中的内容到默认或指定的输出文件中。
file:flush()
--->将缓冲区中的内容写入到file句柄对应的文件中。
open,read,input,output函数请参考这一篇: Lua I/O库(一)
io.type(fileobj)
--->检测fileobj是否一个可用的文件句柄;返回一个字符串
1,"file":为一个打开的文件句柄
2,"closed file":为一个已关闭的文件句柄
3,nil:表示obj不是一个文件句柄
io.stdin,io.stdout,io.stderr
--->通过打印io的字段信息可以看出,这3个是属于预定义C语言的标准流句柄,即io.stdin(标准输入)、io.stdout(标准输出)、io.stderr(标准错误输出)。
io.popen(prog [, mode])(援引:io.popen)
--->可操作文件的同时又可以执行命令与函数os.execute()有点相似。
在额外的进程中启动程序prog,并返回用于prog的文件句柄。通俗的来说就是使用这个函数可以调用一个命令(程序),并且返回一个和这个程序相关的文件描述符,一般是这个被调用函数的输出结果,这个文件打开模式由参数mode确定,有取值"r"和"w"两种,分别表示以读、写方式打开,默认是以读的方式。
io.tmpfile()
--->返回一个临时文件句柄,该文件以更新模式打开,程序结束时自动删除。
file:seek([whence][,offset])
--->获取当前文件位置,成功则返回最终的文件位置(按字节),失败则返回nil加错误信息:
"set": 从文件头开始
"cur": 从当前位置开始[默认]
"end": 从文件尾开始
offset:默认为0,不带参数file:seek()则返回当前位置,file:seek("set")则定位到文件头,file:seek("end")则定位到文件尾并返回文件大小
file:setvbuf(mode,[,size])
--->设置输出文件的缓冲模式mode:
"no": 没有缓冲,即直接输出
"full": 全缓冲,即当缓冲满后才进行输出操作(也可调用flush马上输出)
"line": 以行为单位,进行输出(多用于终端设备)
最后两种模式,size可以指定缓冲的大小(按字节),忽略size将自动调整为最佳的大小
- Lua I/O库(二)
- lua的I/O库
- Lua中的I/O库
- Lua I/O库(一)
- Lua文件I/O
- lua I/O
- lua的I/O操作
- lua -- 文件操作(I/O)
- Lua学习笔记 第二十一章 I/O库
- lua学习总结——I/O库
- 快速掌握Lua 5.3 —— I/O库 (1)
- 快速掌握Lua 5.3 —— I/O库 (2)
- I/O流<二>
- 二.I/O模型
- I/O复用(二)
- 二、文件I/O
- lua基础【五】I/O文件操作
- Java I/O流(二)
- Centos6.5下安装jdk1.8
- shu418 丢史蒂芬妮
- 关于json的小例子
- 基于ARM--s3c2451的函数封装---UART封装
- JDK配置环境变量和用法
- Lua I/O库(二)
- jQuery 第一个例子
- 百度2017秋招笔试编程题
- ubuntu安装和卸载软件命令
- 【【【超高仿】】】迅雷播放器教程 -- 总结——对界面开发介绍非常详细
- Scrapy中的数据流过程展示
- 多线程中异常堆栈信息展示
- Windows 如何获取本机网络连接状态
- HTML基础--(三)