PHP 读取和修改大文件的某行内容的代码


Posted in PHP onOctober 30, 2009
$fp = fopen('d:/file.txt', 'r+'); 
if ($fp) { 
$i = 1; 
while (!feof($fp)) { 
//修改第二行数据 
if ($i == 2) { 
fseek($fp, 2, SEEK_CUR); 
fwrite($fp, '#'); 
break; 
} 
fgets($fp); 
$i++; 
} 
fclose($fp); 
}

这里需要注意的是fgets获取到一行后,文件指针指向行尾(也就是下一行开头),所以fwrite操作的是fgets后的下一行开头,至于从该行的第几个字符开始写,可以使用fseek函数来移动文件指针。另外一个需要注意的是,这里fwrite写入是执行替换操作,而不是插入操作,所以指针后面的字符会一个个被替换掉。至于怎么插入我就没研究了。估计很困难。为了效率可能只能写入另外一个临时文件了,不知道有没有其他更好的方法。

另外今天还看到了使用SPL进行操作的方法:

$fp = new SplFileObject('d:/file.txt', 'r+'); 
//转到第二行, seek方法参数从0开始计数, 经我测试指针指向行尾了, 所以修改的是第三行 
$fp->seek(1); 
//获取当前行内容(第二行) 
$line = $fp->current(); 
//下面是对第三行的操作 
$fp->fseek(2, SEEK_CUR); 
$fp->fwrite('#');

SplFileObject提供的方法比基本的文件操作函数更丰富一些,包括采用key/value方法遍历文件行等。SPL应该是PHP5增加进去的吧,还有其他很多很有用的对象。包括数组、文件目录操作、异常处理、一些基本类型操作等,这些功能还在陆续增加,可以通过继承SPL扩展这些方法让我们处理底层的操作更方便。

PHP 相关文章推荐
smtp邮件发送一例
Oct 09 PHP
php 生成文字png图片的代码
Apr 17 PHP
php学习之 数组声明
Jun 09 PHP
PHP面向对象法则
Feb 23 PHP
解析isset与is_null的区别
Aug 09 PHP
WordPress中邮件的一些修改和自定义技巧
Dec 15 PHP
分享50个提高PHP执行效率的技巧
Dec 26 PHP
PHP实现求两个字符串最长公共子串的方法示例
Nov 17 PHP
利用Laravel生成Gravatar头像地址的优雅方法
Dec 30 PHP
Laravel 实现密码重置功能
Feb 23 PHP
Laravel框架路由和控制器的绑定操作方法
Jun 12 PHP
php实现小程序支付完整版
Oct 09 PHP
PHP 批量删除数据的方法分析
Oct 30 #PHP
ThinkPHP php 框架学习笔记
Oct 30 #PHP
php pack与unpack 摸板字符字符含义
Oct 29 #PHP
php 显示指定路径下的图片
Oct 29 #PHP
dedecms 批量提取第一张图片最为缩略图的代码(文章+软件)
Oct 29 #PHP
PHP 简单日历实现代码
Oct 28 #PHP
php 网页游戏开发入门教程一(webgame+design)
Oct 26 #PHP
You might like
PHP计数器的实现代码
2013/06/08 PHP
windows下配置apache+php+mysql时出现问题的处理方法
2014/06/20 PHP
PHP中number_format()函数的用法讲解
2019/04/08 PHP
新浪刚打开页面出来的全屏广告代码
2007/04/02 Javascript
JQERY limittext 插件0.2版(长内容限制显示)
2010/08/27 Javascript
jQuery创建插件的代码分析
2011/04/14 Javascript
js文本框输入点回车触发确定兼容IE、FF等
2013/11/19 Javascript
FF IE浏览器修改标签透明度的方法
2014/01/27 Javascript
extjs 时间范围选择自动判断的实现代码
2014/06/24 Javascript
JavaScript获取页面中超链接数量的方法
2015/11/09 Javascript
jQuery1.9.1源码分析系列(十六)ajax之ajax框架
2015/12/04 Javascript
javascript之with的使用(阿里云、淘宝使用代码分析)
2016/10/11 Javascript
微信小程序 POST请求(网络请求)详解及实例代码
2016/11/16 Javascript
Angular 2 ngForm中的ngModel、[ngModel]和[(ngModel)]的写法
2017/06/29 Javascript
vue的一个分页组件的示例代码
2017/12/25 Javascript
解决vue项目F5刷新mounted里的函数不执行问题
2019/11/05 Javascript
vue引用外部JS的两种种方法
2020/01/28 Javascript
ant design vue导航菜单与路由配置操作
2020/10/28 Javascript
[05:01]3.19DOTA2发布会 我们都是刀塔人
2014/03/25 DOTA
使用Python写一个贪吃蛇游戏实例代码
2017/08/21 Python
简述:我为什么选择Python而不是Matlab和R语言
2017/11/14 Python
Win8.1下安装Python3.6提示0x80240017错误的解决方法
2018/07/31 Python
详解解决Python memory error的问题(四种解决方案)
2019/08/08 Python
jupyter 实现notebook中显示完整的行和列
2020/04/09 Python
全面介绍python中很常用的单元测试框架unitest
2020/12/14 Python
金宝贝童装官网:Gymboree
2016/08/31 全球购物
全球领先的全景影像品牌:Insta360
2019/08/21 全球购物
澳大利亚最好的电动自行车:Leon Cycle
2020/12/19 全球购物
什么是类的返射机制
2016/02/06 面试题
如果让你测试一台高速激光打印机,你都会进行哪些测试
2012/12/04 面试题
办公室副主任岗位职责
2013/11/25 职场文书
优秀求职信范文分享
2013/12/19 职场文书
监察建议书范文
2014/03/12 职场文书
工资收入证明
2014/10/07 职场文书
会议欢迎词范文
2015/01/27 职场文书
2016年党员学习廉政准则心得体会
2016/01/20 职场文书