--功能:写入文件
--输入:文件名, 内容
--输出:生成的文件里面包含内容
function copyfile(source,destination)
print(destination)
sourcefile = io.open(source, "r")
destinationfile = io.open(destination, "w")
destinationfile:write(sourcefile:read("*all"))
sourcefile:close()
destinationfile:close()
end
--输入:文件名, 内容
--输出:生成的文件里面包含内容
function copyfile(source,destination)
print(destination)
sourcefile = io.open(source, "r")
destinationfile = io.open(destination, "w")
destinationfile:write(sourcefile:read("*all"))
sourcefile:close()
destinationfile:close()
end
I/O库为文件操作提供了两种不同的模型,简单模型和完整模型。简单模型假设一个当前输入文件和一个当前输出文件,他的I/O操作均作用于这些文件。完整模型则使用显式的文件句柄,并将所有的操作定义为文件句柄上的方法。
1. 简单模型:
I/O库会将进程标准输入输出作为其缺省的输入文件和输出文件。我们可以通过io.input(filename)和io.output(filename)这两个函数来改变当前的输入输出文件。
1). io.write函数:
函数原型为io.write(...)。该函数将所有参数顺序的写入到当前输出文件中。如:
io.write("hello","world") --写出的内容为helloworld
2). io.read函数:
下表给出了该函数参数的定义和功能描述:
参数字符串 | 含义 |
"*all" | 读取整个文件 |
"*line" | 读取下一行 |
"*number" | 读取一个数字 |
<num> | 读取一个不超过<num>个字符的字符串 |
调用io.read("*all")会读取当前输入文件的所有内容,以当前位置作为开始。如果当前位置处于文件的末尾,或者文件为空,那个该调用返回一个空字符串。由于Lua可以高效的处理长字符串,因此在Lua中可以先将数据从文件中完整读出,之后在通过Lua字符串库提供的函数进行各种处理。
调用io.read("*line")会返回当前文件的下一行,但不包含换行符。当到达文件末尾时,该调用返回nil。如:
1 for count = 1,math.huge do 2 local line = io.read("*line") --如果不传参数,缺省值也是"*line" 3 if line == nil then 4 break 5 end 6 io.write(string.format("%6d ",count),line,"\n") 7 end