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中usort在值相同时改变原始位置问题的解决方法
Nov 27 PHP
解析在zend Farmework下如何创立一个FORM表单
Jun 28 PHP
PHP goto语句简介和使用实例
Mar 11 PHP
thinkphp学习笔记之多表查询
Jul 28 PHP
php以fastCGI的方式运行时文件系统权限问题及解决方法
May 11 PHP
PHP微信开发之二维码生成类
Jun 26 PHP
详解PHP的Yii框架中日志的相关配置及使用
Dec 08 PHP
PHP格式化MYSQL返回float类型的方法
Mar 30 PHP
php函数mkdir实现递归创建层级目录
Oct 27 PHP
php+ajax+json 详解及实例代码
Dec 12 PHP
PHP mongodb操作类定义与用法示例【适合mongodb2.x和mongodb3.x】
Jun 16 PHP
PHP实现的支付宝支付功能示例
Mar 26 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 mssql 日期出现中文字符的解决方法
2009/03/10 PHP
php实现给图片加灰色半透明效果的方法
2014/10/20 PHP
golang与php实现计算两个经纬度之间距离的方法
2016/07/22 PHP
将jQuery应用于login页面的问题及解决
2009/10/17 Javascript
基于jQuery的淡入淡出可自动切换的幻灯插件
2010/08/24 Javascript
自己动手开发jQuery插件教程
2011/08/25 Javascript
jQuery实现数字加减效果汇总
2014/12/16 Javascript
使用javascript实现json数据以csv格式下载
2015/01/09 Javascript
JavaScript创建一个object对象并操作对象属性的用法
2015/03/23 Javascript
jQuery Validate插件实现表单强大的验证功能
2015/12/18 Javascript
PHP获取当前页面完整URL的方法
2016/12/02 Javascript
浅谈Node.js ORM框架Sequlize之表间关系
2017/07/24 Javascript
jQuery 实时保存页面动态添加的数据的示例
2017/08/14 jQuery
解决vue页面DOM操作不生效的问题
2018/03/17 Javascript
jquery判断滚动条距离顶部的距离方法
2018/09/05 jQuery
jQuery创建折叠式菜单
2019/06/15 jQuery
VUE实现移动端列表筛选功能
2019/08/23 Javascript
ElementUI中el-tree节点的操作的实现
2020/02/27 Javascript
[42:20]2014 DOTA2华西杯精英邀请赛5 24 DK VS NewBee
2014/05/25 DOTA
python缩进区别分析
2014/02/15 Python
使用Python获取CPU、内存和硬盘等windowns系统信息的2个例子
2014/04/15 Python
Python对字符串实现去重操作的方法示例
2017/08/11 Python
tensorflow 1.0用CNN进行图像分类
2018/04/15 Python
python编写猜数字小游戏
2019/10/06 Python
Python队列、进程间通信、线程案例
2019/10/25 Python
Python迭代器模块itertools使用原理解析
2019/12/11 Python
Python concurrent.futures模块使用实例
2019/12/24 Python
Python内置类型性能分析过程实例
2020/01/29 Python
python中tab键是什么意思
2020/06/18 Python
使用CSS3来代替JS实现交互
2017/08/10 HTML / CSS
村干部培训方案
2014/05/02 职场文书
数学教研活动总结
2014/07/02 职场文书
2016年习总书记讲话学习心得体会
2016/01/20 职场文书
导游词之南京汤山温泉
2019/11/26 职场文书
Feign调用传输文件异常的解决
2021/06/24 Java/Android
MySQL数据库超时设置配置的方法实例
2021/10/15 MySQL