2.8.4 在文件中定位:rewind()、fseek()和ftell()
可以使用rewind()、fseek()和ftell()对文件指针进行操作,或者确定发现它在文件中的位置。
rewind()函数可以将文件指针复位到文件的开始。ftell()函数可以以字节为单位报告文件指针当前在文件中的位置。例如,我们可以在初始脚本的结束处添加如下几行代码(在fclose()命令之前):
echo'Final position of the file pointer is'.(ftell($fp));
echo'<br/>';
rewind($fp);
echo'After rewind,the position is'.(ftell($fp));
echo'<br/>';
该脚本在浏览器中的输出结果类似于图2-5所示。
图 2-5 在读取这些订单后,文件指针指向了文件的结尾,总共267字节的偏移量。调用rewind()函数将文件指针重置为0,位于文件的开始处
你也可以使用fseek()函数将文件指针指向文件的某个位置。其函数原型如下所示:
int fseek(resource fp,int offset[,int whence])
调用fseek()函数可以将文件指针fp从whence位置移动offset个字节。whence是一个可选参数,其默认值SEEK_SET表示文件的开始处。该参数的其他可能值为SEEK_CUR(文件指针的当前位置)和SEEK_END(文件的结束)。
rewind()函数等价于调用一个具有零偏移量的fseek()函数。例如,可以使用fseek()函数找到文件中间的记录,或者完成一个二进制查找。通常,如果所涉及的数据文件具有一定的复杂程度,在必须完成这些操作时,使用数据库可以使得这些工作变得更加简单。