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 相关文章推荐
利用文件属性结合Session实现在线人数统计
Oct 09 PHP
php获取网页内容方法总结
Dec 04 PHP
php遍历目录viewDir函数
Dec 15 PHP
关于PHP模板Smarty的初级使用方法以及心得分享
Jun 21 PHP
解析php中的escape函数
Jun 29 PHP
PHP实现加强版加密解密类实例
Jul 29 PHP
PHP的运行机制与原理(底层)
Nov 16 PHP
编写PHP脚本来实现WordPress中评论分页的功能
Dec 10 PHP
开启PHP的伪静态模式
Dec 31 PHP
TP5(thinkPHP框架)实现后台清除缓存功能示例
May 29 PHP
PHP xpath提取网页数据内容代码解析
Jul 16 PHP
详解php中流行的rpc框架
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
谈谈PHP语法(5)
2006/10/09 PHP
PHP几个数学计算的内部函数学习整理
2011/08/06 PHP
PHP 透明水印生成代码
2012/08/27 PHP
通过修改配置真正解决php文件上传大小限制问题(nginx+php)
2015/09/23 PHP
PHP简单实现数字分页功能示例
2016/08/24 PHP
js实现页面转发功能示例代码
2013/08/05 Javascript
Javascript表格翻页效果的具体实现
2013/10/05 Javascript
javascript实现的DES加密示例
2013/10/30 Javascript
jQuery的live()方法对hover事件的处理示例
2014/02/27 Javascript
javascript自动生成包含数字与字符的随机字符串
2015/02/09 Javascript
jquery+CSS实现的水平布局多级网页菜单效果
2015/08/24 Javascript
JavaScript的模块化开发框架Sea.js上手指南
2016/05/12 Javascript
解决jQuery ajax请求在IE6中莫名中断的问题
2016/06/20 Javascript
JavaScript中原型链存在的问题解析
2016/09/25 Javascript
Node.js开发第三方微信公众平台
2017/06/05 Javascript
使用webpack打包后的vue项目如何正确运行(express)
2018/10/26 Javascript
vue的路由映射问题及解决方案
2019/10/14 Javascript
vue实现数字动态翻牌的效果(开箱即用)
2019/12/08 Javascript
如何基于JavaScript判断图片是否加载完成
2019/12/28 Javascript
详谈vue中router-link和传统a链接的区别
2020/07/22 Javascript
[02:19]DOTA2上海特级锦标赛 观赛指南 Spectator Guide
2016/02/04 DOTA
Python实现简单HTML表格解析的方法
2015/06/15 Python
Python常见格式化字符串方法小结【百分号与format方法】
2016/09/18 Python
python实现下载整个ftp目录的方法
2017/01/17 Python
Python计时相关操作详解【time,datetime】
2017/05/26 Python
python中将一个全部为int的list 转化为str的list方法
2018/04/09 Python
Python3使用正则表达式爬取内涵段子示例
2018/04/22 Python
python实现简单登陆系统
2018/10/18 Python
python 缺失值处理的方法(Imputation)
2019/07/02 Python
django model的update时auto_now不被更新的原因及解决方式
2020/04/01 Python
Django 解决distinct无法去除重复数据的问题
2020/05/20 Python
PyQt5的QWebEngineView使用示例
2020/10/20 Python
床上用品全球在线购物:BeddingInn
2016/12/18 全球购物
加拿大领先的优质厨具产品在线购物网站:Golda’s Kitchen
2017/11/17 全球购物
舞出我人生观后感
2015/06/16 职场文书
go开发alertmanger实现钉钉报警
2021/07/16 Golang