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 相关文章推荐
Apache, PHP在Windows 9x/NT下的安装与配置 (二)
Oct 09 PHP
PHP注释实例技巧
Oct 03 PHP
php文件上传的简单实例
Oct 19 PHP
PHP的变量类型和作用域详解
Mar 12 PHP
PHP数据库万能引擎类adodb配置使用以及实例集锦
Jun 12 PHP
PHP使用CURL实现对带有验证码的网站进行模拟登录的方法
Jul 23 PHP
php中Session的生成机制、回收机制和存储机制探究
Aug 19 PHP
php字符串分割函数用法实例
Mar 17 PHP
Laravel 5框架学习之Blade 简介
Apr 08 PHP
UPUPW 更新 64 位 Apache 系列 PHP 7.0 正式版
Dec 08 PHP
thinkPHP中create方法与令牌验证实例浅析
Dec 08 PHP
Yii框架实现邮箱激活的方法【数字签名】
Oct 18 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默认安装产生系统漏洞
2006/10/09 PHP
PHP 获取远程文件大小的3种解决方法
2013/07/11 PHP
thinkPHP5实现的查询数据库并返回json数据实例
2017/10/23 PHP
PHP将整数数字转换为罗马数字实例分享
2019/03/17 PHP
JS中的构造函数详细解析
2014/03/10 Javascript
深入理解jQuery之事件移除
2016/06/02 Javascript
AngularJS 模块详解及简单实例
2016/07/28 Javascript
浅谈jQuery中的$.extend方法来扩展JSON对象
2017/02/12 Javascript
JS正则表达式验证账号、手机号、电话和邮箱是否合法
2017/03/08 Javascript
利用forever和pm2部署node.js项目过程
2017/05/10 Javascript
JavaScript实现form表单的多文件上传
2020/03/27 Javascript
对vue.js中this.$emit的深入理解
2018/02/23 Javascript
微信小程序整合使用富文本编辑器的方法详解
2019/04/25 Javascript
js+html实现点名系统功能
2019/11/05 Javascript
详解vue组件之间的通信
2020/08/30 Javascript
Python正则捕获操作示例
2017/08/19 Python
浅谈Django REST Framework限速
2017/12/12 Python
浅谈pandas中DataFrame关于显示值省略的解决方法
2018/04/08 Python
Python根据已知邻接矩阵绘制无向图操作示例
2018/06/23 Python
python实现将多个文件分配到多个文件夹的方法
2019/01/07 Python
python使用PIL实现多张图片垂直合并
2019/01/15 Python
详解opencv Python特征检测及K-最近邻匹配
2019/01/21 Python
对python多线程SSH登录并发脚本详解
2019/02/14 Python
python多线程和多进程关系详解
2020/12/14 Python
详解淘宝H5 sign加密算法
2020/08/25 HTML / CSS
智能电子秤、手表和健康监测仪:Withings(之前为诺基亚健康)
2018/10/30 全球购物
英国玛莎百货澳大利亚:Marks & Spencer Australia
2019/08/30 全球购物
大学生的四年学习自我评价
2013/12/13 职场文书
招聘单位介绍信
2014/01/14 职场文书
家居装修公司创业计划书范文
2014/03/20 职场文书
《望庐山瀑布》教学反思
2014/04/22 职场文书
Javascript中的解构赋值语法详解
2021/04/02 Javascript
判断Python中的Nonetype类型
2021/05/25 Python
Java 数据结构七大排序使用分析
2022/04/02 Java/Android
python小型的音频操作库mp3Play
2022/04/24 Python