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 中的类
Oct 09 PHP
PHP最常用的ini函数分析 针对PHP.ini配置文件
Apr 22 PHP
php 广告调用类代码(支持Flash调用)
Aug 11 PHP
PHP数据库操作之基于Mysqli的数据库操作类库
Apr 19 PHP
Codeigniter通过SimpleXML将xml转换成对象的方法
Mar 19 PHP
PHP异常处理浅析
May 12 PHP
yii分页组件用法实例分析
Dec 28 PHP
Yii2使用自带的UploadedFile实现的文件上传
Jun 20 PHP
thinkPHP基于ajax实现的菜单与分页示例
Jul 12 PHP
laravel 5.5 关闭token的3种实现方式
Oct 24 PHP
基于PHP实现短信验证码发送次数限制
Jul 11 PHP
基于PHP实现生成随机水印图片
Dec 09 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
smarty中js的调用方法示例
2014/10/27 PHP
PHP制作用户注册系统
2015/10/23 PHP
实例讲解如何在PHP的Yii框架中进行错误和异常处理
2016/03/17 PHP
PHP实现微信JS-SDK接口选择相册及拍照并上传的方法
2016/12/05 PHP
php+webSoket实现聊天室示例代码(附源码)
2017/02/17 PHP
详解PHP防止直接访问.php 文件的实现方法
2017/07/28 PHP
PHP实现合并两个排序链表的方法
2018/01/19 PHP
点图片上一页下一页翻页效果
2008/07/09 Javascript
javascript替换已有元素replaceChild()使用介绍
2014/04/03 Javascript
JavaScript分秒倒计时器实现方法
2015/02/02 Javascript
基于JavaScript实现简单的音频播放功能
2018/01/07 Javascript
three.js 入门案例详解
2018/01/23 Javascript
在Vue中获取组件声明时的name属性方法
2018/09/12 Javascript
Vue中全局变量的定义和使用
2019/06/05 Javascript
通过GASP让vue实现动态效果实例代码详解
2019/11/24 Javascript
React学习之JSX与react事件实例分析
2020/01/06 Javascript
[47:48]DOTA2上海特级锦标赛D组小组赛#2 Liquid VS VP第三局
2016/02/28 DOTA
Python标准库之sqlite3使用实例
2014/11/25 Python
Python实现简单截取中文字符串的方法
2015/06/15 Python
Python动态声明变量赋值代码实例
2019/12/30 Python
Pycharm创建python文件自动添加日期作者等信息(步骤详解)
2021/02/03 Python
瑞典最好的运动鞋专卖店:Sneakersnstuff
2016/08/29 全球购物
StubHub智利:购买和出售您的门票
2016/11/23 全球购物
台湾深度自由行旅游平台:Tripbaa趣吧
2017/10/10 全球购物
英国最大的LED专业零售商:Led Hut
2018/03/16 全球购物
应用心理学个人求职信范文
2013/12/11 职场文书
监察建议书范文
2014/03/12 职场文书
优秀大学生求职自荐信范文
2014/04/19 职场文书
企业党员个人自我评价
2014/09/20 职场文书
3.15消费者权益日活动总结
2015/02/09 职场文书
学校中秋节活动总结
2015/03/23 职场文书
中国汉字听写大会观后感
2015/06/02 职场文书
结婚仪式主持词
2015/06/29 职场文书
Python 数据可视化之Bokeh详解
2021/11/02 Python
详解Spring Security中的HttpBasic登录验证模式
2022/03/17 Java/Android
90后经典动画片排行:《数码宝贝》第二,《小鲤鱼历险记》在榜
2022/03/18 日漫