PHP可以实现文件指针的定位及查询,从而实现所需信息的快速查询。指针的位置就是从文件头部开始的字节数,默认的文件指针通常存在于文件头或结尾,可以通过PHP提供的fseek()、feof()和ftell()等函数对指针位置进行操作。
● rewind()
倒回文件指针的位置,语法如下
function rewind ($handle) bool
其作用是将handle的文件位置指针设为文件流的开头。
● fseek()
在文件指针中定位,语法如下:
function fseek ($handle, $offset, $whence = SEEK_SET) int
该函数的作用是在与handle关联的文件中设定文件指针位置。新位置从文件头开始以字节数度量,是以whence指定的位置再加上offset。成功时返回0,否则返回-1,移动到EOF之后的位置不算错误。
● ftell()
返回文件指针读写的位置,语法如下:
function ftell ($handle) false|int
该函数返回由handle指定的文件指针的位置,也就是文件流中的偏移量。
下面演示一个示例介绍这几个函数的用法。
假设目录中有这样一个文件1.txt,里面的内容为:abcdefghijklmnopqrstuvwxyz。
编写zhizhen.php代码如下:
<?php
$filename="1.txt";
if(is_file($filename)){
echo "文件总字节数: ".filesize($filename)."<br/>";
$file=fopen($filename,"r");
echo "初始指针位置是: " .ftell($file)."<br/>";
echo "输出当前指针后面的内容:".fgets($file)."<br/>";
fseek($file,5);
echo "使用fseek()函数后指针位置: ".ftell($file)."<br/>";
//当前指针后面的内容从5开始,fgets()函数输出5以后的内容
echo "输出当前指针后面的内容:".fgets($file)."<br/>";
if(feof($file))
echo "当月前指针指向文件末尾: ".ftell($file)."<br/>";
rewind($file);
echo "使用rewind()函数后指针的位置: " .ftell($file)."<br/>";
//fgets()函数执行成功时从参数handle所指向的文件中读取一行
//并返回长度最多为length-1字节的字符串,因此设置06时可以输出前5个字节内容
echo "输出前5个字节内容: " .fgets($file,6);
fclose($file);
}else
{
echo "文件不存在";
}
执行zhizhen.php文件,将会在浏览器中打印出以下结果:
文件总字节数: 26
初始指针位置是: 0
输出当前指针后面的内容:abcdefghijklmnopqrstuvwxyz
使用fseek()函数后指针位置: 5
输出当前指针后面的内容:fghijklmnopqrstuvwxyz
当月前指针指向文件末尾: 26
使用rewind()函数后指针的位置: 0
输出前5个字节内容: abcde