[ Skill ] 文件读写 & IO 句柄

https://www.cnblogs.com/yeungchie/

在 Skill 中使用一种叫做 ioport 类型的变量来操作文件。不过我一般更习惯称为 IO 句柄 (IO/File Handle)

常用下面两个函数来获得这些 IO 句柄:

  • infile
    获得输入句柄, 文件。
  • outfile
    获得输出句柄, 文件。

输入

输入句柄 infile

假设现有一个文件 file.txt

$ cat -n file.txt
     1  2022-02-20
     2  20:39:29
     3  Sunday

获取一个输入句柄,打开这个文件。

inHandle = infile( "file.txt" )

行读取 gets

gets 可以将按 迭代文件内容,一行一行读取,全部内容读取完会返回 nil

gets( string inHandle )

上面这个操作将第一行的内容复制给了 string 变量。

printf( "%s\n" string )
; 2022-02-20

也可以将第一个参数指定为 nil,不赋值给变量,通过函数返回值的读取内容,类似 sprintf 函数
再次使用 gets 则会继续读取第二行内容。

printf( "%s\n" gets( nil inHandle ))
; 20:39:29

字读取 getc

getc 可以将按 单个字符 迭代文件内容,一个字一个字读取,全部内容读取完会返回 nil

printf( "%s\n" getc( nil inHandle ))
; S

读取完剩下内容,并打印出来。

while( getc( char inHandle )
  printf( "%s\n" char )
)
; u
; n
; d
; a
; y

读取结束后记得 关闭 这个句柄。

close( inHandle )

输出

输出句柄 outfile

获取一个输出句柄,打开一个文件,打开方式如果没有指定则默认为 w,这会覆盖原有内容。

outHandle = outfile( "file.txt" )

打印输出 fprintf

fprintf 将字符串输出到 IO 句柄,下面写点东西进去。

fprintf( outHandle "%s\n" "2022-02-20")
close( outHandle )
$ car -n file.txt
     1  2022-02-20

打开方式 mode

上面提到 outfile 的默认打开方式 w 会覆盖源文件内容,当我们需要在源文件基础上追加内容时,可以在第二个参数指定 a ,代表 append 方式。

outHandle = outfile( "file.txt" "a" )
fprintf( outHandle "%s\n" "21:06:13")
$ cat -n file.txt
     1  2022-02-20
     2  21:06:13

关闭

关闭句柄 close

上面的例子中已经出现过了,功能很简单,IO 句柄用完后关掉它,解除句柄和文件的关联,释放资源。

close( inHandle )
close( outHandle )

预设句柄

预设的几个句柄变量。

标准输入 stdin

标准输出 stdout

标准错误输出 stderr

刷新缓冲

刷新 CIW hiFlushCIW

上一篇:杰理之影响功耗的次要因素一般都与硬件有关【篇】


下一篇:节流throttle、防抖debounce