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提取中文首字母
Apr 09 PHP
PHP 文件类型判断代码
Mar 13 PHP
php面向对象全攻略 (三)特殊的引用“$this”的使用
Sep 30 PHP
php用header函数实现301跳转代码实例
Nov 25 PHP
php中eval函数的危害与正确禁用方法
Jun 30 PHP
完善CodeIgniter在IDE中代码提示功能的方法
Jul 19 PHP
PHP四种基本排序算法示例
Apr 09 PHP
PHP实现的json类实例
Jul 28 PHP
PHP7.1新功能之Nullable Type用法分析
Sep 26 PHP
PHP连接sftp并下载文件的方法教程
Aug 26 PHP
php版本CKEditor 4和CKFinder安装及配置方法图文教程
Jun 05 PHP
ThinkPHP5.1+Ajax实现的无刷新分页功能示例
Feb 10 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
最小化数据传输――在客户端存储数据
2006/10/09 PHP
php面向对象全攻略 (六)__set() __get() __isset() __unset()的用法
2009/09/30 PHP
php下获取Discuz论坛登录用户名、用户组、用户ID等信息的实现代码
2010/12/29 PHP
PHP缓存集成库phpFastCache用法
2014/12/15 PHP
Laravel6.2中用于用户登录的新密码确认流程详解
2019/10/16 PHP
window.open的功能全解析
2006/10/10 Javascript
基于jquery的自定义鼠标提示效果 jquery.toolTip
2010/11/14 Javascript
jquery实现奇偶行赋值不同css值
2012/02/17 Javascript
jquery动态增加text元素以及删除文本内容实例代码
2013/07/01 Javascript
JS去除字符串两端空格的简单实例
2013/12/27 Javascript
详解webpack+angular2开发环境搭建
2017/06/28 Javascript
[js高手之路]HTML标签解释成DOM节点的实现方法
2017/08/31 Javascript
angularjs实现的购物金额计算工具示例
2018/05/08 Javascript
JS实现指定区域的全屏显示功能示例
2019/04/25 Javascript
es6 super关键字的理解与应用实例分析
2020/02/15 Javascript
浅谈Vue3 Composition API如何替换Vue Mixins
2020/04/29 Javascript
[01:25:09]2014 DOTA2国际邀请赛中国区预选赛 5 23 CIS VS DT第二场
2014/05/24 DOTA
[00:11]战神迅矛
2019/03/06 DOTA
[56:42]VP vs RNG 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/17 DOTA
Python通过命令开启http.server服务器的方法
2017/11/04 Python
python随机取list中的元素方法
2018/04/08 Python
python中实现字符串翻转的方法
2018/07/11 Python
python实现随机漫步方法和原理
2019/06/10 Python
使用pytorch完成kaggle猫狗图像识别方式
2020/01/10 Python
pandas map(),apply(),applymap()区别解析
2021/02/24 Python
AmazeUI 手机版页面的顶部导航条Header与侧边导航栏offCanvas的示例代码
2020/08/19 HTML / CSS
俄罗斯护发和专业化妆品购物网站:Hihair
2019/09/28 全球购物
复核员上岗演讲稿
2014/01/05 职场文书
大学班长的职责
2014/01/27 职场文书
《台湾的蝴蝶谷》教学反思
2014/02/20 职场文书
揭牌仪式策划方案
2014/05/28 职场文书
人力资源管理毕业求职信
2014/08/05 职场文书
法人单位授权委托书范文
2014/10/06 职场文书
追讨欠款律师函
2015/05/27 职场文书
2016初一新生军训心得体会
2016/01/11 职场文书
面试被问select......for update会锁表还是锁行
2021/11/11 MySQL