在对文件进行读写过程中,有时需要在文件中跳转、同不同位置读取,以及将数据写入到不同的位置。例如,使用文件模拟数据库保存数据,就需要移动文件指针。指针的位置是以从文件头开始的字节数度量的,默认以不同模式打开文件时,文件指针通常在文件的开头或是结尾处,可以通过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()总结相关推荐

  1. C++——文件指针定位--fseek,ftell

    #include <iostream> using namespace std;void main() {FILE *fp=fopen("1.txt","a+ ...

  2. c语言ftell的作用,C语言的文件随机访问fseek()和ftell()函数

    http://blog.csdn.net/libing403/article/details/73158972 我们要讨论3个问题:fseek()和ftell()函数的工作原理.如何使用二进制流.如何 ...

  3. C语言的文件随机访问fseek()和ftell()函数

    C语言的文件随机访问fseek()和ftell()函数 我们要讨论3个问题:fseek()和ftell()函数的工作原理.如何使用二进制流.如何让程序可移植. fseek()与ftell()的工作原理 ...

  4. C语言的文件操作(文件指针、文件缓冲区、文件的打开、读写操作)

    目录 1. 文件缓冲区 2. 文件指针 3. 文件的打开与关闭 4. 文件的顺序读写 4.1 fputc fgetc函数 4.2 fputs fgets函数的用法类似 4.3 fprintf和fsca ...

  5. matlab 文件指针回到开头,[c/c++] 文件指针位置回到文件开头(rewind)及行开头(ftell+fseek)...

    待读入文件 1.greenteemo 2.csdn 3.blog 代码,详细说明见注释 #include #define LENGTH_OF_LINE 1024 int main(){ FILE *f ...

  6. C语言之文件读写探究(五):rewind、ftell、fseek(文件指针偏移)

    相关博文:C语言之文件读写探究(一):fopen.fclose(文件的打开和关闭) 相关博文:C语言之文件读写探究(二):fputc.fgetc.feof(一次读写一个字符(文本操作)) 相关博文:C ...

  7. c语言文件操作中fseek,ftell,rewind的用法以及文件的输入和输出以及读写

    1. 为什么使用文件 我们前面学习结构体时,可以写通讯录的程序,当通讯录运行起来的时候,可以给通讯录中增加.删除数据,此时数据是存放在内存中,当程序退出的时候,通讯录中的数据自然就不存在了,等下次运行 ...

  8. 标准IO:fseek/rewind/ftell 文件IO:lseek

    一.标准IO 1.1fseek/rewind/ftell函数的详细介绍 int fseek(FILE *stream, long offset, int whence); 功能:修改光标的位置 参数: ...

  9. C语言——文件操作函数 fseek、ftell、rewind详解

    前言 前面,我讲了讲文件操作的第二步:文件的读写操作,里面详细的介绍了各类读写函数的用法,有兴趣的小伙伴可以去看看: C语言--文件操作(2)文件的读写操作_ 接下来,我再来讲一讲关于标题中这三个函数 ...

最新文章

  1. 使用socket创建服务器进程和客户端进程
  2. android apk反编译工具下载,Android apk反编译工具下载与使用
  3. 江西理工大学期末试卷c语言,2016年江西理工大学信息工程学院计算机应用技术(加试)之C语言程序设计复试笔试最后押题五套卷...
  4. android 混合开发 图片,混合开发的大趋势之一React Native之Image
  5. mybatis查询返回null的原因_可怕!你没看错,这次确实是纯手工实现一个MyBatis框架...
  6. ASP.NET的Application简介1
  7. LINUX安装fossil
  8. 微软模拟飞行2020服务器多少内存,《微软模拟飞行2020》:一款游戏大到7000万GB,这才是真正的模拟地球?!...
  9. touchpanel驱动
  10. 新广告法违规词、敏感词在线检测工具
  11. openvino踩坑记(ImportError: DLL load failed while importing ie_api)
  12. 网络收包LRO GRO测试总结
  13. dell服务器全系列手册,DELL服务器 RAID配置中文手册.pdf
  14. 数据库附加失败解决方法
  15. SWUST#954: 单链表的链接
  16. Linux系统用C语言设计酒店管理系统
  17. MySQL查询行记录关键字_MySQL数据库~~~~~查询行(文件的内容)
  18. <<,>>和>>>的区别
  19. 中科院博士论文致谢部分走红,感动无数网友,其实沉下心来,你我何尝不是前程万里
  20. CSS之text-overflow--怎么让多余的文字不显示或者以省略号表示

热门文章

  1. 手动安装oracle软件 删软件
  2. 最烦人的正则表达式记忆口诀
  3. Openresty使用
  4. 补psp进度(11月4号-9号)
  5. 全局变量:global与$GLOBALS的区别和使用
  6. php单引号双引号的区别
  7. 软件开发者的最佳实践
  8. 深入了解jquery中的键盘事件
  9. ORA-01502: index ‘index_name' or partition of such index is in unusable state
  10. Java IO 体系(三):Reader与Writer