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 相关文章推荐
玩转虚拟域名◎+ .
Oct 09 PHP
php&amp;java(一)
Oct 09 PHP
phpMyAdmin下载、安装和使用入门教程
May 31 PHP
php中的数组操作函数整理
Aug 18 PHP
PHP访问MYSQL数据库封装类(附函数说明)
Dec 04 PHP
iis下php mail函数的sendmail配置方法(官方推荐)
Apr 25 PHP
thinkphp模板赋值与替换实例简述
Nov 24 PHP
php堆排序实现原理与应用方法
Jan 03 PHP
php抛出异常与捕捉特定类型的异常详解
Oct 26 PHP
PHP制作登录异常ip检测功能的实例代码
Nov 16 PHP
如何通过View::first使用Laravel Blade的动态模板详解
Sep 21 PHP
php数组指针函数功能及用法示例
Feb 11 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 采集书并合成txt格式的实现代码
2009/03/01 PHP
php中一个完整表单处理实现代码
2011/11/10 PHP
PHP页面间参数传递的四种方法详解
2013/06/09 PHP
php使用date和strtotime函数输出指定日期的方法
2014/11/14 PHP
PHP性能分析工具XHProf安装使用教程
2015/05/13 PHP
Yii2框架配置文件(Application属性)与调试技巧实例分析
2019/05/27 PHP
jQuery Ajax 全解析
2009/02/08 Javascript
javascript delete 使用示例代码
2010/03/29 Javascript
基于jquery编写的放大镜插件
2016/03/23 Javascript
Angular2仿照微信UI实现9张图片上传和预览的示例代码
2017/10/19 Javascript
vue 2.x 中axios 封装的get 和post方法
2018/02/28 Javascript
Vue.js中使用iView日期选择器并设置开始时间结束时间校验功能
2018/08/12 Javascript
Vue+Django项目部署详解
2019/05/30 Javascript
layui中的switch开关实现方法
2019/09/03 Javascript
JS实现iframe中子父页面跨域通讯的方法分析
2020/03/10 Javascript
微信小程序12行js代码自己写个滑块功能(推荐)
2020/07/15 Javascript
javascript全局自定义鼠标右键菜单
2020/12/08 Javascript
Python入门及进阶笔记 Python 内置函数小结
2014/08/09 Python
简单的编程0基础下Python入门指引
2015/04/01 Python
Python中super的用法实例
2015/05/28 Python
python实现决策树C4.5算法详解(在ID3基础上改进)
2017/05/31 Python
python使用 HTMLTestRunner.py生成测试报告
2017/10/20 Python
python爬虫 使用真实浏览器打开网页的两种方法总结
2018/04/21 Python
pytorch方法测试详解——归一化(BatchNorm2d)
2020/01/15 Python
tensorflow之变量初始化(tf.Variable)使用详解
2020/02/06 Python
使用tensorflow框架在Colab上跑通猫狗识别代码
2020/04/26 Python
解决pip install psycopg2出错问题
2020/07/09 Python
印度网上购物首选目的地:Flipkart
2016/08/01 全球购物
澳大利亚体育和露营装备在线/实体零售商:Find Sports
2020/06/03 全球购物
护理专业本科生自荐信
2013/10/01 职场文书
公司庆典欢迎词
2015/01/26 职场文书
2015秋季运动会通讯稿
2015/07/18 职场文书
2016优秀大学生个人事迹材料范文
2016/03/01 职场文书
Python 中的单分派泛函数你真的了解吗
2021/06/22 Python
Redis基本数据类型哈希Hash常用操作命令
2022/06/01 Redis
关于mysql中string和number的转换问题
2022/06/14 MySQL