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与php MySQL 之间的关系
Jul 17 PHP
PHP file_get_contents 函数超时的几种解决方法
Jul 30 PHP
PHP 利用AJAX获取网页并输出的实现代码(Zjmainstay)
Aug 31 PHP
分割GBK中文遭遇乱码的解决方法
Aug 09 PHP
PHP+MySQL修改记录的方法
Jan 21 PHP
PHP中使用imagick实现把PDF转成图片
Jan 26 PHP
PHP中数据类型转换的三种方式
Apr 02 PHP
一个简单至极的PHP缓存类代码
Oct 23 PHP
ThinkPHP删除栏目(实现批量删除栏目)
Jun 21 PHP
yii2.0整合阿里云oss上传单个文件的示例
Sep 19 PHP
thinkphp5框架API token身份验证功能示例
May 21 PHP
详解Laravel框架的依赖注入功能
May 27 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
《逃离塔科夫》——“萌新劝退,老手自嗨”的硬核FPS游戏
2020/04/03 其他游戏
ajax在joomla中的原生态应用代码
2012/07/19 PHP
PHP输出缓存ob系列函数详解
2014/03/11 PHP
PHP限制HTML内容中图片必须是本站的方法
2015/06/16 PHP
WordPress中制作导航菜单的PHP核心方法讲解
2015/12/11 PHP
验证token、回复图文\文本、推送消息的实用微信类php代码
2016/06/28 PHP
PHP从尾到头打印链表实例讲解
2018/09/27 PHP
PHP二维索引数组的遍历实例分析【2种方式】
2019/06/24 PHP
关于PHP求解三数之和问题详析
2020/11/09 PHP
运用jquery实现table单双行不同显示并能单行选中
2009/07/25 Javascript
multiSteps 基于Jquery的多步骤滑动切换插件
2011/07/22 Javascript
使用jQuery同时控制四张图片的伸缩实现代码
2013/04/19 Javascript
js+div实现图片滚动效果代码
2014/02/10 Javascript
JavaScript类属性的访问方式详解
2014/02/11 Javascript
JavaScript编程中的Promise使用大全
2015/07/28 Javascript
举例讲解JavaScript中将数组元素转换为字符串的方法
2015/10/25 Javascript
简单实现限制uploadify上传个数
2015/11/16 Javascript
基于vue-resource jsonp跨域问题的解决方法
2018/02/03 Javascript
浅谈Angularjs中不同类型的双向数据绑定
2018/07/16 Javascript
微信小程序自定义tabBar组件开发详解
2020/09/24 Javascript
微信小程序日历组件使用方法详解
2018/12/29 Javascript
JS使用正则表达式实现常用的表单验证功能分析
2020/04/30 Javascript
vue和H5 draggable实现拖拽并替换效果
2020/07/29 Javascript
[01:58]2018DOTA2亚洲邀请赛趣味视频——交流
2018/04/03 DOTA
python十进制和二进制的转换方法(含浮点数)
2018/07/07 Python
Python3中在Anaconda环境下安装basemap包
2018/10/21 Python
详解重置Django migration的常见方式
2019/02/15 Python
python画图的函数用法以及技巧
2019/06/28 Python
python实现简单俄罗斯方块
2020/03/13 Python
浅谈在django中使用filter()(即对QuerySet操作)时踩的坑
2020/03/31 Python
python使用bs4爬取boss直聘静态页面
2020/10/10 Python
英国女士家居服网站:hush
2017/08/09 全球购物
加拿大领先的时尚和体育零售商:Sporting Life
2019/12/15 全球购物
哥伦比亚加拿大官网:Columbia Sportswear Canada
2020/09/07 全球购物
市场部岗位职责
2015/02/12 职场文书
SQL基础的查询语句
2021/11/11 MySQL