发表于:2010-02-25 07:23:01
楼主
默认文件输入输出方式是连续的:即每个gets或 read命令返回的是上次gets或 read访问位置后面的字节,每个puts命令写数据是接着上次puts写的位置接着写。TCL提供了seek,tell和eof等命令使用户可以非连续访问文件。
每个打开的打开文件都有访问点,即下次读写开始的位置。文件打开时,访问点总是被设置为文件的开头或结尾,这取决于打开文件时使用的访问模式。每次读写后访问位置按访问的字节数后移相应的位数。
可以使用seek命令来改变文件的访问点:
seek fileId offset ?origin? 把fileId标识的文件的访问点设置为相对于origin偏移量为offset的位置。origin可以是start,current,end,默认是start。命令的返回值是一空字符串。
例如:seek fileId 2000 改变fieleId标识的文件访问点,以便下次读写开始于文件的第2000个字节。
seek的第三个参数说明偏移量从哪开始计算。第三个参数必为start,current或end中的一个。start是默认值:即偏移量是相对文件开始处计算。current是偏移量从当前访问位置计算。end是偏移量从文件尾开始计算。
tell fileId 返回fileId标识的文件的当前访问位置。
eof fileId 如果到达fileId标识的文件的末尾返回1,否则返回0。