PHP移动文件指针ftell()、fseek()、rewind()总结
在对文件进行读写过程中,有时需要在文件中跳转、同不同位置读取,以及将数据写入到不同的位置。例如,使用文件模拟数据库保存数据,就需要移动文件指针。指针的位置是以从文件头开始的字节数度量的,默认以不同模式打开文件时,文件指针通常在文件的开头或是结尾处,可以通过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+”打开,写入文件的任何数据是会被附加在后面,不会管文件指针的位置。代码如下所示:
范例:
1 <?php 2 //data.txt 里内容 abcdefg 3 4 $fp = fopen(__DIR__.'/data.txt','r') or die('文件打开失败'); 5 6 echo ftell($fp) , PHP_EOL; //输出刚打开文件的指针默认的位置,指针在文件的开头位置为0 7 8 echo fread($fp,2) , PHP_EOL; //读取文件中的前2个字符输出,指针位置变化 9 10 echo ftell($fp) , PHP_EOL; //此时指针移动的位置在第2个字节处 11 12 fseek($fp,2,SEEK_CUR); //将指针位置移动到 当前位置(2) + 2的位置 13 14 echo ftell($fp) , PHP_EOL; //指针当前指向的位置为4 15 16 echo fread($fp,1) , PHP_EOL; //读取1个字节 e, 此时指针指向5 17 18 fseek($fp,-7,SEEK_END); //又将指针移动到 文件末尾指针 + -7 的位置 19 20 echo fread($fp,1) , PHP_EOL; // 取1字节 21 22 rewind($fp); //又移动文件指针到文件的开头 23 24 echo ftell($fp); //指针在文件的开头位置,输出0 25 26 //关闭资源 27 fclose($fp);
转载于:https://www.cnblogs.com/loveyouyou616/p/5976425.html
PHP移动文件指针ftell()、fseek()、rewind()总结相关推荐
- C++——文件指针定位--fseek,ftell
#include <iostream> using namespace std;void main() {FILE *fp=fopen("1.txt","a+ ...
- c语言ftell的作用,C语言的文件随机访问fseek()和ftell()函数
http://blog.csdn.net/libing403/article/details/73158972 我们要讨论3个问题:fseek()和ftell()函数的工作原理.如何使用二进制流.如何 ...
- C语言的文件随机访问fseek()和ftell()函数
C语言的文件随机访问fseek()和ftell()函数 我们要讨论3个问题:fseek()和ftell()函数的工作原理.如何使用二进制流.如何让程序可移植. fseek()与ftell()的工作原理 ...
- C语言的文件操作(文件指针、文件缓冲区、文件的打开、读写操作)
目录 1. 文件缓冲区 2. 文件指针 3. 文件的打开与关闭 4. 文件的顺序读写 4.1 fputc fgetc函数 4.2 fputs fgets函数的用法类似 4.3 fprintf和fsca ...
- matlab 文件指针回到开头,[c/c++] 文件指针位置回到文件开头(rewind)及行开头(ftell+fseek)...
待读入文件 1.greenteemo 2.csdn 3.blog 代码,详细说明见注释 #include #define LENGTH_OF_LINE 1024 int main(){ FILE *f ...
- C语言之文件读写探究(五):rewind、ftell、fseek(文件指针偏移)
相关博文:C语言之文件读写探究(一):fopen.fclose(文件的打开和关闭) 相关博文:C语言之文件读写探究(二):fputc.fgetc.feof(一次读写一个字符(文本操作)) 相关博文:C ...
- c语言文件操作中fseek,ftell,rewind的用法以及文件的输入和输出以及读写
1. 为什么使用文件 我们前面学习结构体时,可以写通讯录的程序,当通讯录运行起来的时候,可以给通讯录中增加.删除数据,此时数据是存放在内存中,当程序退出的时候,通讯录中的数据自然就不存在了,等下次运行 ...
- 标准IO:fseek/rewind/ftell 文件IO:lseek
一.标准IO 1.1fseek/rewind/ftell函数的详细介绍 int fseek(FILE *stream, long offset, int whence); 功能:修改光标的位置 参数: ...
- C语言——文件操作函数 fseek、ftell、rewind详解
前言 前面,我讲了讲文件操作的第二步:文件的读写操作,里面详细的介绍了各类读写函数的用法,有兴趣的小伙伴可以去看看: C语言--文件操作(2)文件的读写操作_ 接下来,我再来讲一讲关于标题中这三个函数 ...
最新文章
- 使用socket创建服务器进程和客户端进程
- android apk反编译工具下载,Android apk反编译工具下载与使用
- 江西理工大学期末试卷c语言,2016年江西理工大学信息工程学院计算机应用技术(加试)之C语言程序设计复试笔试最后押题五套卷...
- android 混合开发 图片,混合开发的大趋势之一React Native之Image
- mybatis查询返回null的原因_可怕!你没看错,这次确实是纯手工实现一个MyBatis框架...
- ASP.NET的Application简介1
- LINUX安装fossil
- 微软模拟飞行2020服务器多少内存,《微软模拟飞行2020》:一款游戏大到7000万GB,这才是真正的模拟地球?!...
- touchpanel驱动
- 新广告法违规词、敏感词在线检测工具
- openvino踩坑记(ImportError: DLL load failed while importing ie_api)
- 网络收包LRO GRO测试总结
- dell服务器全系列手册,DELL服务器 RAID配置中文手册.pdf
- 数据库附加失败解决方法
- SWUST#954: 单链表的链接
- Linux系统用C语言设计酒店管理系统
- MySQL查询行记录关键字_MySQL数据库~~~~~查询行(文件的内容)
- <<,>>和>>>的区别
- 中科院博士论文致谢部分走红,感动无数网友,其实沉下心来,你我何尝不是前程万里
- CSS之text-overflow--怎么让多余的文字不显示或者以省略号表示