10.3.1  文件读写操作语句和函数

10.3.1 文件读写操作语句和函数

文件的操作主要是读和写,在文件的读/写过程中需要使用许多语句和函数,本节介绍常用的文件打开与操作语句和函数。

(1)FreeFile函数

使用FreeFile函数可得到一个在程序中没有使用的文件号,该函数返回一个整型数据。这个函数在程序中打开多个文件时非常有用,可以避免出现相同的文件号。

语法格式如下。

978-7-111-49659-5-Chapter10-28.jpg

其中,参数rangenumber是可选参数,用来决定返回的文件号的取值范围。当参数值为0时,返回一个介于1~255的文件号;为1时,返回一个介于256~511的文件号。默认值为0。

例如:

978-7-111-49659-5-Chapter10-29.jpg

(2)Loc函数

Loc函数返回由“文件号”指定的文件的当前读/写位置,是一个长整型值。

语法格式如下。

978-7-111-49659-5-Chapter10-30.jpg

Loc函数对于随机文件,返回上一次读取或写入的记录号;对于二进制文件,返回上一次读取或写入的字节位置;对于顺序文件,返回该文件打开以后读或写的记录个数,一个记录是一个数据块。

例如:

978-7-111-49659-5-Chapter10-31.jpg

(3)LOF函数

LOF函数返回一个长整型值,表示用Open语句打开文件的大小,以字节为单位。

语法格式如下。

978-7-111-49659-5-Chapter10-32.jpg

例如:

978-7-111-49659-5-Chapter10-33.jpg

(4)Lock和Unlock语句

在多用户或多进程环境中,可以用Lock和Unlock语句限制其他用户或进程对打开的全部文件或部分文件的访问。在使用Lock和Unlock语句时,这两条语句总是成对出现。

语法格式如下。

978-7-111-49659-5-Chapter10-34.jpg

对于不同类型的文件,“记录”“开始”“结束”的含义也不同。对于二进制文件,它们代表从文件开头计算的字节号,文件的第一个字节的字节号是1;对于随机文件,它们代表从文件开头计算的记录号,文件的第一个记录的记录号是1。

例如:

978-7-111-49659-5-Chapter10-35.jpg

(5)FileAttr函数

FileAttr函数返回一个长整型值,表示使用Open语句打开文件的方式。

语法格式如下。

978-7-111-49659-5-Chapter10-36.jpg

其中,“返回值类型”是可选参数,只能取两个值:1(默认值)和2。当参数值为1(或省略)时,返回打开文件的方式,返回值见表10-1。当参数值为2时,返回打开文件的句柄。

表10-1 打开方式返回值

978-7-111-49659-5-Chapter10-37.jpg

例如:

978-7-111-49659-5-Chapter10-38.jpg

(6)EOF函数

EOF函数用于测试文件的结束标志,可以避免因试图在文件结尾处进行输入而产生的错误。

语法格式如下。

978-7-111-49659-5-Chapter10-39.jpg

对于用Input方式打开的顺序文件,如果已经读到文件尾,则返回True,否则返回False。

对于以Output、Append打开的顺序文件,EOF函数总是返回True。

对于随机文件,如果最后执行的Get语句未能读出完整的记录,则EOF函数返回True,否则返回False。

EOF函数通常用来在循环读数据时测试是否已到文件尾,例如:

978-7-111-49659-5-Chapter10-40.jpg

(7)Seek函数

Seek函数返回一个长整型值,在Open语句打开的文件中指定当前的读/写位置。

语法格式如下。

978-7-111-49659-5-Chapter10-41.jpg

文件号为必选,是一个有效文件号。

(8)Seek语句

在Open语句打开的文件中,Seek语句用于设置下一个读/写操作的位置。

语法格式如下。

978-7-111-49659-5-Chapter10-42.jpg

说明:对于用Binary、Input、Output或Append方式打开的文件,“位置”是从文件开头到“位置”为止的字节数,即执行下一个操作的地址。对于用Random方式打开的文件,“位置”是记录号。

Get和Put语句中的记录号优先于由Seek语句确定的位置。当“位置”为零或负数时,将产生出错信息“错误的记录号”。当Seek语句的“位置”在文件尾之后时,对文件的写操作将扩展该文件。