aardio 文档

io 库文件操作

io 库提供标准输入输出,文件操作函数,

如果是一次性读写文件数据,应优先选择:string 库文件读写函数

打开或创建文件对象

1. 函数原型:

file = io.file( filepath, mode="r",shflag )

2. 函数说明:

io.file 用于打开或创建文件对象。
函数调用成功会返回文件对象,调用失败则会返回 null, 错误信息。

io.file 对象参考手册

参数 @filepath 指定要打开的文件路径,如果文件路径参数为空(null 或 空字符串)则创建可读写的临时文件对象。

可选的 @shflag 参数用于指定文件共享或独占模式。

@shflag 支持以下选项:

@mode 参数使用一个包含模式字符的字符串指定文件读写选项,可选模式如下:

3. 调用示例:

  //打开文件失败时会返回两个参数: null,错误信息
  var file,err = io.file("/nofile.txt", "rb"); 

  //断言
  assert( file,err );

  //读文件第一行数据
  var line = file.read();

  //关闭文件,对象回收时也会自动调用 close 函数
  file.close();

assert 函数在接收的第一个参数为 null 时断言失败,断言失败时会将第二个参数作为错误信息抛出异常。请参考: assert

关闭文件

可使用 file.close() 函数关闭使用 io.file 打开的文件 file 对象。如果不调用 close 函数,在对象回收时也会触发析构函数并自动调用 close 函数关闭文件。

写文件

我们可使用 file.write 函数写入数据到文件。

函数原型:

file.write(...);  

file.write 函数可指定任意个数的数值、字符串、或结构体(struct)作为参数,然后将它们写入到输出文件流。

示例:

var file = io.file("/test.txt","w+b");

file.write("hello" + "world"); //先连接字符串再写入是不必要的。
file.write("hello", "world"); //直接用多个参数更快更好

file.write 的参数中如果是定义了原生数据类型的 结构体,则会转换为二进制数据并直接写入文件。

输出缓冲

file.flush() 函数输出缓冲区内容到文件中。调用 file.flush 函数或者 file.close 函数都会将缓冲区的内容立即保存到文件。

读文件

函数原型:

file.read(...)  

file.read 函数从当前输入文件读取数据,由它的参数控制读取的内容。

file.read 的参数可以有任意多个,参数可设置的选项如下:

函数从当前输入文件中读取出一个数值(而不是字符串)。
当需要从一个文件中读取大量数字时,数字间的字符串为空白可以显著的提高执行性能。 "%d" 选项会跳过两个可被识别数字之间的任意空格。这些可识别的字符串可以是-3, +5.2, 1000,和 -3.4e-23。如果在当前位置找不到一个数字(由于格式不对,或者是到了文件的结尾),则返回 null 。

可以对 file.read 的每个参数设置不同的选项,函数将返回各自的结果。例如: var n1,n2,n3 = file.read("%d","%d","%s")

反向读文件

函数原型:

var str = file.readback(n)  

此函数与 file.read 类似,不同的是它从后向前移动文件指针并读取指定参数 n 指定字节长度的内容,如果没有指定长度,则向前读取一行.

此函数不支持多参数,也不支持除数值以外的参数。

无参数则向前读取一行。
不支持其他格式参数,不支持多参数。

移动文件指针

函数原型:

file.seek(whence="cur",offset=0)  

whence 参数指定偏移方式,offset 参数指定偏移量。
返回值为读写指针的当前位置。

whence 参数可选项如下

whence 的默认值为"cur",offset的默认值为 0。如果不指定任何参数使用 var offset = file.seek() 得到的返回值就是文件当前的存取位置,且保持原位置不变(不会移动文件指针)。

file.seek("set") 会将文件的存取位置重设到文件开头。
offset = file.seek("end") 会将文件指针移动到文件尾。

如果需要得到文件的大小又不改变读写指针的位置,可以使用 file.size() 函数。

设置缓冲区

函数原型:

file.setvbuf (mode [, size])  

设置写入文件流使用的缓冲区,
第一个参数指定缓冲区模式,支持以下三种模式:

可选用第二个参数指定缓冲区大小。

Markdown 格式