深入解析文件指针操作:ftell、fseek、rewind函数的使用技巧与实例
在读取和编写文件的过程中,有时有必要跳入文件,在同一位置阅读并将数据写入不同的位置。例如,使用文件仿真数据库保存数据,您需要移动文件指针。指针的位置由从文件标头开始的字节数来衡量。默认情况下以不同模式打开文件时,文件指针通常在文件的开头或结尾处,并且可以是ftell(),fseek()和rewind()。功能在文件指针上运行,其原型如下:

int ftell(resource handle) //返回文件指针的当前位置 int fseek(resource hanlde,int offset[,int whence]) //移动文件指针到指定位置 bool rewind(resource handle)//移动文件指针到文件的开头
使用这些功能时,必须提供使用Fopen()函数打开的法律文件指针。函数ftell()在指定资源中将文件指针的当前位置的偏移偏移;函数rewind()将文件指针移至指定资源的开头;函数fseek()函数将指针移动到第二个参数,如果未提供第三个可选参数,则将偏移指定的位置设置为在文件开头的偏移字节。否则,可以将第三个参数设置为三个可能的值,这将影响指针的位置。
★SEEK_CUR:将指针位置设置为当前位置以及第二个参数提供的偏移字节。
★seek_end:将指针位置设置为EOF加上偏移字节。在这里,偏移必须设置为负值。
★seek_set:将指针位置设置为偏移字节。这与忽略第三个参数效果相同。
如果FSEEK()函数成功执行,则它将返回0,如果失败,它将返回-1。如果文件是在附加模式“ A”或“ A+”中打开的,则写在文件上的任何数据都将附加到背面,并且不会负责文件。指针位置。代码看起来像这样:
"; //输出刚打开文件的指针默认位置,指针在文件的开头位置为0 echo fread($fp, 10)."
"; //读取文件中的前10个字符输出,指针位置发生了变化 echo ftell($fp)."
"; //读取文件的前10个字符之后,指针移动的位置在第10个字节处 fseek($fp, 100,SEEK_CUR); //又将指针移动到倒数10个字节位置处 echo ftell($fp); //文件的位置在110个字节处 echo fread($fp,10)."
"; //读取110到120字节数位置的字符串,读取后指针的位置为120 fseek($fp,-10,SEEK_END); //又将指针移动到倒数10个字节位置处 echo fread($fp, 10)."
"; //输出文件中最后10个字符 rewind($fp); //又移动文件指针到文件的开头 echo ftell($fp); //指针在文件的开头位置,输出0 fclose($fp); ?>