I/O库为文件操作提供两种模式。
简单模式(simple model)拥有一个当前输入文件和一个当前输出文件。而且提供针对这些文件相关的操作。全然模式(complete model)使用外部的文件句柄来实现。
简单模式
I/O库将当前输入文件作为标准输入(stdin),将当前输出文件作为标准输出(stdout)。这样当我们执行io.read,就是在标准输入中读取一行。
写操作较读操作简单。我们先从写操作入手。
以下这个样例里函数io.write获取随意数目的字符串參数。接着将它们写到当前的输出文件。
local t = io.write("sin (3) = ", math.sin(3), " ") --> sin (3) = 0.1411200080598672 print("hello", "Lua"); print("Hi") -->hello Lua -->Hi
注:Write函数与print函数不同在于,write不附加不论什么额外的字符到输出中去。比如制表符,换行符等等。还有write函数是使用当前输出文件。而print始终使用标准输出。
另外print函数会自己主动调用參数的tostring方法,所以能够显示出表(tables)函数(functions)和nil。
read函数:从当前输入文件读取串,由它的參数控制读取的内容:
样例:
--io.read 从标准输入流中获得。默认设置下。就是你的屏幕输入 t = io.read("*all") t = string.gsub(t, ...) -- do the job io.write(t) -- write the提示:若使用luaEditor编辑器,预计无法在屏幕输入。
全然模式
全然模式的核心在于文件句柄(file handle)。该结构相似于C语言中的文件流(FILE*)。其呈现了一个打开的文件以及当前存取位置。打开一个文件的函数是io.open。它模仿C语言中的fopen函数,相同须要打开文件的文件名称參数。打开模式的字符串參数:
样例:
--读操作 file = io.open("testRead.txt", "r") for line in file:lines() do print(line) end file:close() --写操作 file = io.open("testRead.txt","a+") file:write(" hello") file:close()
素材:
内容:
执行结果:
文件内容: