readLines!

语法

readLines!(handle, holder, [offset=0], [length=1])

参数

handle 是文件句柄。

holder 是用于保存读取的数据的变量。

offset 表示数据保存至holder的起始位置。

length 是从文件中读取的行数。

详情

从句柄中读取给定数量的字符串,并从指定位置开始,把读取结果保存至holder表示的变量中。函数返回实际读取的行数。

readLines 函数的每次调用都创建了一个字符串向量并返回。创建字符串向量需要一定的时间开销,所以如果在重复执行函数调用时,能重用相同的向量作为缓冲区的话,可以节约时间。 readLines! 就是这样的函数,它接受已存在的缓冲区作为数据容器。下述的两个例子读取相同数量的数据 100 次。readLines! 函数比 readLines 函数更快。

例子

 $ timer(100){
 $ fin = file("test.txt")
 $ do{ y=fin.readLines(1024) } while(y.size()==1024)
 $ fin.close()
 $ };

Time elapsed: 79.511 ms

 $ timer(100){
 $ fin = file("test.txt")
 $ y=array(STRING,1024)
 $ do{ lines = fin.readLines!(y,0,1024) } while(lines==1024)
 $ fin.close()
 $ };

Time elapsed: 56.034 ms