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 相关文章推荐
php curl选项列表(超详细)
Jul 01 PHP
如何在Ubuntu下启动Apache的Rewrite功能
Jul 05 PHP
php number_format() 函数通过千位分组来格式化数字的实现代码
Aug 06 PHP
浅析application/x-www-form-urlencoded和multipart/form-data的区别
Jun 22 PHP
修复ShopNC使用QQ 互联时提示100010 错误
Nov 08 PHP
thinkPHP模板中函数的使用方法示例
Nov 30 PHP
Zend Framework路由器用法实例详解
Dec 11 PHP
PHP调用API接口实现天气查询功能的示例
Sep 21 PHP
php从数据库读取数据,并以json格式返回数据的方法
Aug 21 PHP
PHP实现获取文件mime类型多种方法解析
May 28 PHP
PHP替换Word中变量并导出PDF图片的实现方法
Nov 26 PHP
PHP实现页面静态化深入讲解
Mar 04 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 include的妙用,实现路径加密
2008/07/29 PHP
PHP explode()函数用法、切分字符串
2012/10/03 PHP
深入理解ob_flush和flush的区别(ob_flush()与flush()使用方法)
2013/02/06 PHP
PHP以指定字段为索引返回数据库所取的数据数组
2013/06/30 PHP
PHP 验证登陆类分享
2015/03/13 PHP
Thinkphp+smarty+uploadify实现无刷新上传
2015/07/30 PHP
Jquery实现自定义窗口随意的拖拽
2014/03/12 Javascript
jquery+css3打造一款ajax分页插件(自写)
2014/06/18 Javascript
IE下使用jQuery重置iframe地址时内存泄露问题解决办法
2015/02/05 Javascript
通过Tabs方法基于easyUI+bootstrap制作工作站
2016/03/28 Javascript
JavaScript兼容性总结之获取非行间样式案例
2016/08/07 Javascript
基于JavaScript实现屏幕滚动效果
2017/01/18 Javascript
js数组常用最重要的方法
2018/02/04 Javascript
es6数值的扩展方法
2019/03/11 Javascript
跟老齐学Python之画圈还不简单吗?
2014/09/20 Python
使用django-suit为django 1.7 admin后台添加模板
2014/11/18 Python
Python2.x和3.x下maketrans与translate函数使用上的不同
2015/04/13 Python
python实现简单淘宝秒杀功能
2018/05/03 Python
Python使用matplotlib绘制三维图形示例
2018/08/25 Python
Python类的继承、多态及获取对象信息操作详解
2019/02/28 Python
python中的colorlog库使用详解
2019/07/05 Python
python实现ip地址查询经纬度定位详解
2019/08/30 Python
flask框架json数据的拿取和返回操作示例
2019/11/28 Python
Python reversed反转序列并生成可迭代对象
2020/10/22 Python
浅谈Python __init__.py的作用
2020/10/28 Python
布里斯班女装时尚品牌:Adrift
2017/12/28 全球购物
档案管理员岗位职责
2013/12/01 职场文书
会议开场欢迎词
2014/01/15 职场文书
新农村建设标语
2014/06/24 职场文书
中国梦演讲稿开场白
2014/08/28 职场文书
科学育儿宣传标语
2014/10/08 职场文书
停课通知书
2015/04/24 职场文书
2015年车间安全管理工作总结
2015/05/13 职场文书
2015最新婚礼司仪主持词
2015/06/30 职场文书
酒桌上的祝酒词
2015/08/12 职场文书
pandas中DataFrame重置索引的几种方法
2021/05/24 Python