PHP移动文件指针ftell()、fseek()、rewind()函数总结


Posted in PHP onNovember 18, 2014

在对文件进行读写过程中,有时需要在文件中跳转、同不同位置读取,以及将数据写入到不同的位置。例如,使用文件模拟数据库保存数据,就需要移动文件指针。指针的位置是以从文件头开始的字节数度量的,默认以不同模式打开文件时,文件指针通常在文件的开头或是结尾处,可以通过ftell()、fseek()和rewind()三个函数对文件指针进行操作,它们的原型如下所示:

int ftell(resource handle)         //返回文件指针的当前位置

int fseek(resource hanlde,int offset[,int whence])          //移动文件指针到指定位置

bool rewind(resource handle)          //移动文件指针到文件的开头

使用这些函数时,必须提供一个用fopen()函数打开的、合法的文件指针。函数ftell()获取由指定的资源中的文件指针当前位置的偏移量;函数rewind()将文件指针移回到指定资源的开头;而函数fseek()函数则将指针移动到第二个参数offset指定的位置,如果没有提供第三个可选参数whence,则位置将设置为从文件开头的offset字节处。否则,第三个参数whence可以设置为三个可能的值,它将影响指针的位置。

★SEEK_CUR:设置指针位置为当前位置加上第二个参数所提供的offset字节。
★SEEK_END:设置指针位置为EOF加上offset字节。在这里,offset必须设置为负值。
★SEEK_SET:设置指针位置为offset字节处。这与忽略第三个参数whence效果相同。

如果fseek()函数执行成功,将返回0,失败则返回-1.如果将文件以追加模式“a”或“a+”打开,写入文件的任何数据是会被附加在后面,不会管文件指针的位置。代码如下所示:

<?php

$fp = fopen('data.txt' ,'r')or die("文件打开失败");

 

echo ftell($fp)."<br>";         //输出刚打开文件的指针默认位置,指针在文件的开头位置为0

echo fread($fp, 10)."<br>";        //读取文件中的前10个字符输出,指针位置发生了变化

echo ftell($fp)."<br>";           //读取文件的前10个字符之后,指针移动的位置在第10个字节处

 

fseek($fp, 100,SEEK_CUR);       //又将指针移动到倒数10个字节位置处

echo ftell($fp); //文件的位置在110个字节处

echo fread($fp,10)."<br>";     //读取110到120字节数位置的字符串,读取后指针的位置为120

 

fseek($fp,-10,SEEK_END);         //又将指针移动到倒数10个字节位置处

echo fread($fp, 10)."<br>";        //输出文件中最后10个字符

 

rewind($fp);          //又移动文件指针到文件的开头

echo ftell($fp);           //指针在文件的开头位置,输出0

 

fclose($fp);

?>
PHP 相关文章推荐
一个多文件上传的例子(原创)
Oct 09 PHP
使用MaxMind 根据IP地址对访问者定位
Oct 09 PHP
支持oicq头像的留言簿(一)
Oct 09 PHP
几种显示数据的方法的比较
Oct 09 PHP
PHP访问MYSQL数据库封装类(附函数说明)
Dec 04 PHP
php实现水仙花数的4个示例分享
Apr 08 PHP
php计算几分钟前、几小时前、几天前的几个函数、类分享
Apr 09 PHP
php生成图片缩略图的方法
Apr 07 PHP
搭建Vim为自定义的PHP开发工具的一些技巧
Dec 11 PHP
PHP的AES加密算法完整实例
Jul 20 PHP
PHP常用的三种设计模式汇总
Aug 28 PHP
PHP 序列化和反序列化函数实例详解
Jul 18 PHP
PHP文件锁函数flock()详细介绍
Nov 18 #PHP
php字符比较函数similar_text、strnatcmp与strcasecmp用法分析
Nov 18 #PHP
PHP操作文件的一些基本函数使用示例
Nov 18 #PHP
一个经典的PHP文件上传类分享
Nov 18 #PHP
php数组查找函数总结
Nov 18 #PHP
一个经典的PHP验证码类分享
Nov 18 #PHP
一个经典实用的PHP图像处理类分享
Nov 18 #PHP
You might like
php preg_filter执行一个正则表达式搜索和替换
2012/02/27 PHP
工厂模式在Zend Framework中应用介绍
2012/07/10 PHP
ajax完美实现两个网页 分页功能的实例代码
2013/04/16 PHP
解析zend studio中直接导入svn中的项目的方法步骤
2013/06/21 PHP
PHP中strtr字符串替换用法详解
2014/11/26 PHP
提高php编程效率技巧
2015/08/13 PHP
php双层循环(九九乘法表)
2017/10/23 PHP
laravel 解决groupBy时出现的错误 isn't in Group By问题
2019/10/17 PHP
jQuery1.6 正式版发布并提供下载
2011/05/05 Javascript
node.js中的fs.fsync方法使用说明
2014/12/15 Javascript
JavaScript暂停和继续定时器的实现方法
2016/07/18 Javascript
js实现带缓动动画的导航栏效果
2017/01/16 Javascript
JS中from 表单序列化提交的代码
2017/01/20 Javascript
jQuery表格(Table)基本操作实例分析
2017/03/10 Javascript
JavaScript使用原型和原型链实现对象继承的方法详解
2017/04/05 Javascript
Nodejs 和 Electron ubuntu下快速安装过程
2018/05/04 NodeJs
three.js搭建室内场景教程
2018/12/30 Javascript
使用jQuery mobile NuGet让你的网站在移动设备上同样精彩
2019/06/18 jQuery
javascript将16进制的字符串转换为10进制整数hex
2020/03/05 Javascript
Python中方法链的使用方法
2016/02/23 Python
Python实现的单向循环链表功能示例
2017/11/10 Python
python绘制简单折线图代码示例
2017/12/19 Python
Python Flask前后端Ajax交互的方法示例
2018/07/31 Python
python 字符串只保留汉字的方法
2018/11/16 Python
Python 动态导入对象,importlib.import_module()的使用方法
2019/08/28 Python
PyCharm 2019.3发布增加了新功能一览
2019/12/08 Python
德国前卫设计师时装在线商店:Luxury Loft
2019/11/04 全球购物
什么是servlet
2012/05/08 面试题
大专毕业生简历的自我评价
2013/10/20 职场文书
农场厂长岗位职责
2013/12/28 职场文书
《闻一多先生的说和做》教学反思
2014/04/28 职场文书
超市理货员岗位职责
2014/07/04 职场文书
我的中国梦演讲稿400字
2014/08/19 职场文书
导游欢迎词范文
2015/01/23 职场文书
获奖感言怎么写
2015/07/31 职场文书
JavaScript最完整的深浅拷贝实现方式详解
2022/02/28 Javascript