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 相关文章推荐
ThinkPHP3.0略缩图不能保存到子目录的解决方法
Sep 30 PHP
浅析Mysql 数据回滚错误的解决方法
Aug 05 PHP
php 生成短网址原理及代码
Jan 23 PHP
CodeIgniter框架提示Disallowed Key Characters的解决办法
Apr 21 PHP
ThinkPHP模版引擎之变量输出详解
Dec 05 PHP
php实现对两个数组进行减法操作的方法
Apr 17 PHP
php使用标签替换的方式生成静态页面
May 21 PHP
分享php邮件管理器源码
Jan 06 PHP
PHP判断FORM表单或URL参数来的数据是否为整数的方法
Mar 25 PHP
PHP基于正则批量替换Img中src内容实现获取缩略图的功能示例
Jun 07 PHP
PHP实现的简单组词算法示例
Apr 10 PHP
Laravel 简单实现Ajax滚动加载示例
Oct 22 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中$美元符号与Zen Coding冲突问题解决方法分享
2014/05/28 PHP
thinkphp3.2实现跨控制器调用其他模块的方法
2017/03/14 PHP
php调用云片网接口发送短信的实现方法
2017/10/25 PHP
PHP设计模式之装饰器模式定义与用法详解
2018/04/02 PHP
Yii2框架控制器、路由、Url生成操作示例
2019/05/27 PHP
如何简单地用YUI做JavaScript动画
2007/03/10 Javascript
js 事件小结 表格区别
2007/08/13 Javascript
Iframe 自适应高度并实时监控高度变化的js代码
2009/10/30 Javascript
超级有用的13个基于jQuery的内容滚动插件和教程
2011/07/31 Javascript
JavaScript高级程序设计 错误处理与调试学习笔记
2011/09/10 Javascript
js中判断数字\字母\中文的正则表达式 (实例)
2012/06/29 Javascript
单击和双击事件的冲突处理示例代码
2014/04/03 Javascript
Javascript中With语句用法实例
2015/05/14 Javascript
jQuery实现简易的输入框字数计数功能示例
2017/01/16 Javascript
Vue.js学习笔记之常用模板语法详解
2017/07/25 Javascript
ES6之模版字符串的具体使用
2018/05/17 Javascript
vue中v-for通过动态绑定class实现触发效果
2018/12/06 Javascript
mocha的时序规则讲解
2019/02/16 Javascript
详解小程序毫秒级倒计时(适用于拼团秒杀功能)
2019/05/05 Javascript
基于vue、react实现倒计时效果
2019/08/26 Javascript
JavaScript缺少insertAfter解决方案
2020/07/03 Javascript
[42:20]Winstrike vs VGJ.S 2018国际邀请赛淘汰赛BO3 第二场 8.23
2018/08/24 DOTA
Python天气预报采集器实现代码(网页爬虫)
2012/10/07 Python
Python使用正则表达式抓取网页图片的方法示例
2017/04/21 Python
浅谈django开发者模式中的autoreload是如何实现的
2017/08/18 Python
Selenium定时刷新网页的实现代码
2018/10/31 Python
python3 中使用urllib问题以及urllib详解
2020/08/03 Python
HTML5的文档结构和新增标签完全解析
2017/04/21 HTML / CSS
英国和爱尔兰的自炊式豪华度假小屋:Rural Retreats
2018/06/08 全球购物
Java语言的优势
2015/01/10 面试题
前厅收银主管岗位职责
2014/02/04 职场文书
贷款承诺书范文
2014/05/19 职场文书
公民代理授权委托书
2014/09/24 职场文书
公司介绍信范文
2015/01/31 职场文书
2015年度村委会工作总结
2015/04/29 职场文书
考教师资格证不要错过的4个最佳时机
2019/07/17 职场文书