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的错误信息
Oct 09 PHP
Discuz 模板引擎的封装类代码
Jul 18 PHP
php 字符转义 注意事项
May 27 PHP
php排序算法(冒泡排序,快速排序)
Oct 09 PHP
解析用PHP实现var_export的详细介绍
Jun 20 PHP
国外十大最流行的PHP框架排名
Jul 04 PHP
变量在 PHP7 内部的实现(一)
Dec 21 PHP
smarty的section嵌套循环用法示例
May 28 PHP
round robin权重轮循算法php实现代码
May 28 PHP
浅谈PHP发送HTTP请求的几种方式
Jul 25 PHP
PHP获取数据库表中的数据插入新的表再原删除数据方法
Oct 12 PHP
php使用lua+redis实现限流,计数器模式,令牌桶模式
Apr 04 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
MySQL GBK→UTF-8编码转换
2007/05/24 PHP
基于MySQL分区性能的详细介绍
2013/05/02 PHP
php判断当前操作系统类型
2015/10/28 PHP
php 根据自增id创建唯一编号类
2017/04/06 PHP
jquery pagination插件实现无刷新分页代码
2009/10/13 Javascript
StringTemplate遇见jQuery冲突的解决方法
2011/09/22 Javascript
javascript元素动态创建实现方法
2015/05/13 Javascript
深入学习JavaScript中的Rest参数和参数默认值
2015/07/28 Javascript
jQuery实现信息提示框(带有圆角框与动画)效果
2015/08/07 Javascript
JS 实现倒计时数字时钟效果【附实例代码】
2016/03/30 Javascript
基于Vue.js的表格分页组件
2016/05/22 Javascript
JavaScript创建对象的七种方式(推荐)
2017/06/26 Javascript
js设置随机切换背景图片的简单实例
2017/11/12 Javascript
Mac中安装nvm的教程分享
2017/12/11 Javascript
angular 实时监听input框value值的变化触发函数方法
2018/08/31 Javascript
React项目动态设置title标题的方法示例
2018/09/26 Javascript
如何让node运行es6模块文件及其原理详解
2018/12/11 Javascript
深入学习js函数的隐式参数 arguments 和 this
2019/06/24 Javascript
微信小程序 checkbox使用实例解析
2019/09/09 Javascript
[01:12:44]VG vs Mineski Supermajor 败者组 BO3 第二场 6.6
2018/06/07 DOTA
Python常用内置函数总结
2015/02/08 Python
python进程管理工具supervisor的安装与使用教程
2017/09/05 Python
解决python tkinter界面卡死的问题
2019/07/17 Python
获取Pytorch中间某一层权重或者特征的例子
2019/08/17 Python
Django-silk性能测试工具安装及使用解析
2020/11/28 Python
HTML5 Plus 实现手机APP拍照或相册选择图片上传功能
2016/07/13 HTML / CSS
HTML5 canvas基本绘图之绘制五角星
2016/06/27 HTML / CSS
新郎新娘婚礼答谢词
2014/01/11 职场文书
总经理助理工作职责
2014/02/06 职场文书
六一节目主持词
2014/04/01 职场文书
怎么写工作检讨书
2014/11/16 职场文书
2014员工聘用协议书(最新版)
2014/11/24 职场文书
少先队辅导员事迹材料
2014/12/24 职场文书
银行柜员优质服务心得体会
2016/01/22 职场文书
工作计划范文之财务管理
2019/08/09 职场文书
python ansible自动化运维工具执行流程
2021/06/24 Python