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.8.4 在文件中定位:rewind()、fseek()和ftell() - 图1

图 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()函数找到文件中间的记录,或者完成一个二进制查找。通常,如果所涉及的数据文件具有一定的复杂程度,在必须完成这些操作时,使用数据库可以使得这些工作变得更加简单。