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 相关文章推荐
MYSQL数据库初学者使用指南
Nov 16 PHP
PHP全概率运算函数(优化版) Webgame开发必备
Jul 04 PHP
php修改指定文件后缀的方法
Sep 11 PHP
php使用类继承解决代码重复的问题
Feb 11 PHP
php实现购物车产品删除功能(2)
Jul 23 PHP
ThinkPHP3.2框架使用addAll()批量插入数据的方法
Mar 16 PHP
微信公众平台开发教程③ PHP实现微信公众号支付功能图文详解
Apr 10 PHP
PHP中strtr与str_replace函数运行性能简单测试示例
Jun 22 PHP
php源码的安装方法和实例
Sep 26 PHP
php pdo连接数据库操作示例
Nov 18 PHP
Yii 框架使用Forms操作详解
May 18 PHP
详解Laravel服务容器的优势
May 29 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
《Re:从零开始的异世界生活》剧情体验,手游新作定名
2020/04/09 日漫
PHP中用header图片地址 简单隐藏图片源地址
2008/04/09 PHP
PHP实现MySQL更新记录的代码
2008/06/07 PHP
检查url链接是否已经有参数的php代码 添加 ? 或 &amp;
2010/02/09 PHP
Yii2中datetime类的使用
2016/12/17 PHP
Laravel框架使用Seeder实现自动填充数据功能
2018/06/13 PHP
开发跨浏览器javascript常见注意事项
2009/01/01 Javascript
JS特权方法定义作用以及与公有方法的区别
2013/03/18 Javascript
用JavaScript计算在UTF-8下存储字符串占用字节数
2013/08/08 Javascript
通过JQuery将DIV的滚动条滚动到指定的位置方便自动定位
2014/05/05 Javascript
jQuery中click事件的定义和用法
2014/12/20 Javascript
javascript 实现动态侧边栏实例详解
2016/11/11 Javascript
vue.js实现仿原生ios时间选择组件实例代码
2016/12/21 Javascript
微信小程序 下拉列表的实现实例代码
2017/03/08 Javascript
vue-cli脚手架config目录下index.js配置文件的方法
2018/03/13 Javascript
JavaScript实现打字游戏
2021/02/19 Javascript
[02:40]DOTA2英雄基础教程 炼金术士
2013/12/23 DOTA
python爬虫入门教程之糗百图片爬虫代码分享
2014/09/02 Python
对于Python的Django框架部署的一些建议
2015/04/09 Python
python实现发送和获取手机短信验证码
2016/01/15 Python
Python正则简单实例分析
2017/03/21 Python
利用Python批量提取Win10锁屏壁纸实战教程
2018/03/27 Python
Pytorch 数据加载与数据预处理方式
2019/12/31 Python
Numpy中np.random.rand()和np.random.randn() 用法和区别详解
2020/10/23 Python
Django websocket原理及功能实现代码
2020/11/14 Python
HTML5实时语音通话聊天MP3压缩传输3KB每秒
2019/08/28 HTML / CSS
家庭户外服装:Hawkshead
2017/11/02 全球购物
UGG美国官网:购买UGG雪地靴、拖鞋和鞋子
2017/12/31 全球购物
加利福尼亚州威尼斯的女性奢侈品设计师服装和概念店:Mona Moore
2018/09/13 全球购物
亚洲在线旅行门户网站:Expedia.com.hk(智游网)
2020/04/14 全球购物
几个Linux面试题笔试题
2016/08/01 面试题
新教师工作感言
2014/02/16 职场文书
企业消防安全责任书
2014/07/23 职场文书
化工实习心得体会
2014/09/09 职场文书
关于运动会的广播稿50字
2014/10/17 职场文书
初中班主任工作总结2015
2015/05/13 职场文书