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 )
预设句柄
预设的几个句柄变量。