LUA IO库

I/O库为文件操作提供两种模式。简单模式(simple model)拥有一个当前输入文件和一个当前输出文件,并且提供针对这些文件相关的操作。完全模式(complete model)使用外部的文件句柄来实现。

简单模式

I/O库将当前输入文件作为标准输入(stdin),将当前输出文件作为标准输出(stdout)。这样当我们执行io.read,就是在标准输入中读取一行。
写操作较读操作简单,我们先从写操作入手。

下面这个例子里函数io.write获取任意数目的字符串参数,接着将它们写到当前的输出文件。

local t = io.write("sin (3) = ", math.sin(3), "\n")
--> 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("\nhello")
file:close()

素材:

内容:

运行结果:

文件内容:

LUA IO库

时间: 2024-12-09 04:15:09

LUA IO库的相关文章

[Lua]Lua IO库整理

I/O库为文件操作提供了两种不同的模型,简单模型和完整模型.简单模型假设有一个当前输入文件和一个当前输出文件,它的I/O操作均作用于这些文件.完整模型则使用显式地文件句柄.它采用了面向对象的风格,并将所有的操作定义为文件句柄上的方法.  简单IO模式 简单模型的所有操作都作用于两个当前文件.I/O库将当前输入文件初始化为进程标准输入(stdin),将当前输出文件初始化为进程标准输出.在执行io.read()操作时,就会从标准输入中读取一行. 用函数io.input和io.output可以改变这两

Lua_第 20 章 IO库

第 20 章 IO库 I/O  库为文件操作提供两种模式.简单模式(simple  model)拥有一个当前输入文件和一个当前输出文件,并且提供针对这些文件相关的操作.完全模式(complete  model) 使用外部的文件句柄来实现.它以一种面对对象的形式,将所有的文件操作定义为文件句柄的方法.简单模式在做一些简单的文件操作时较为合适.在本书的前面部分我们一直都在使用它.但是在进行一些高级的文件操作的时候,简单模式就显得力不从心.例 如同时读取多个文件这样的操作,使用完全模式则较为合适.I/

C++ Primer 读书笔记: 第8章 标准IO库

第8章 标准IO库 8.1 面向对象的标准库 1. IO类型在三个独立的头文件中定义:iostream定义读写控制窗口的类型,fstream定义读写已命名文件的类型,而sstream所定义的类型则用于读写存储在内存中的string对象.在fstream和sstream里定义的美中类型都是从iostream头文件中定义的相关类型派生而来. 2. 流对象不能复制,因此不能存储在vector容器中 3. 形参或返回类型也不能为流类型.如果需要传递或返回IO对象,则必须传递或返回指向该对象的指针或引用.

[APUE]标准IO库(下)

一.标准IO的效率 对比以下四个程序的用户CPU.系统CPU与时钟时间对比 程序1:系统IO 程序2:标准IO getc版本 程序3:标准IO fgets版本 结果: [注:该表截取自APUE,上表中"表3-1中的最佳时间即<程序1>","表3-1中的单字节时间指的是<程序1>中BUFSIZE为1时运行时间结果",fgetc/fputc版本程序这里没放出] 对于三个标准IO版本的每一个其用户CPU时间都大于最佳read版本,因为每次读一个字符

在UNIX系统下使用IO库程序

在上一篇文章中,我们已经可以在UNIX下编译一个hello world 程序了.今天介绍UNIX系统下,如何在程序中使用IO库. 主体流程分为以下三步:(代码参考的是:<<C++ Primer>>) 第一步:新建文件,并命名为“Progr1.cpp” 第二步:在Progr1.cpp中写好main函数,并使用cin ,cout 这两个IO库函数.代码如下 #include <iostream>//告诉编译器要使用 iostream 库.尖括号里的名字是一个.头文件.程序使

C++ Primer学习总结 第8章 IO库

 第8章 IO库 1.    IO类继承关系: 2.    查询iostream流状态P280-281 V是一个int,当我们输入1, 'r',或Ctrl+z 时的输出分别如下: cin.clear()可以清楚所有的错误位,使good()返回true. 3.    fstream对文件的读写P284 初始创建读入和写出fstream对象之后,把fin和fout完全看成cin和cout处理即可,它们操作几乎没有区别. 4.    对同一个文件同时打开进行读写会出现不可预知的BUG. 对于文件的操作

Lua字符串库

Lua字符串库小集 1. 基础字符串函数:    字符串库中有一些函数非常简单,如:    1). string.len(s) 返回字符串s的长度:    2). string.rep(s,n) 返回字符串s重复n次的结果:    3). string.lower(s) 返回s的副本,其中所有的大写都被转换为了小写形式,其他字符不变:    4). string.upper(s) 和lower相反,将小写转换为大写:    5). string.sub(s,i,j) 提取字符串s的第i个到第j个

LUA string库

Lua解释器对字符串的支持很有限.一个程序可以创建字符串并连接字符串,但不能截取子串,检查字符串的大小,检测字符串的内容.在Lua中操纵字符串的功能基本来自于string库. 一.String库的常用函数: --返回字符串s的长度 local s = "HelloWorld" print(string.len(s)) -->10 --重复n次字符串s的串 print(string.rep(s,2)) -->HelloWorldHelloWorld --大写字母转换成小写 p

读书笔记-APUE第三版-(5)标准IO库

ISO C标准I/O库使用流的概念读写文件.流是对数据传输的抽象,可以把流理解为从起点到终点间的字节序列. 标准I/O库通过维护进程空间内的缓冲区,减少read/write系统调用次数来提高I/O效率.之前介绍的Unbuffered I/O和文件描述符fd打交道,标准I/O则使用FILE指针. typedef struct{ short level;/*缓冲区满程度*/ unsigned flags;/*文件打开状态标志*/ char fd;/*文件描述符*/ unsigned char hol