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 相关文章推荐
php 文件缓存函数
Oct 08 PHP
解析php函数method_exists()与is_callable()的区别
Jun 21 PHP
浅析php过滤html字符串,防止SQL注入的方法
Jul 02 PHP
Yii操作数据库的3种方法
Mar 11 PHP
php算法实例分享
Jul 14 PHP
PHP实现简单实用的分页类代码
Apr 08 PHP
CI框架整合smarty步骤详解
May 19 PHP
laravel 中如何使用ajax和vue总结
Aug 16 PHP
PHP简单实现循环链表功能示例
Nov 10 PHP
Laravel模型事件的实现原理详解
Mar 14 PHP
php字符串函数 str类常见用法示例
May 15 PHP
thinkphp5 redis缓存新增方法实例讲解
Mar 24 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
如何给phpadmin一个保护
2006/10/09 PHP
mysql5写入和读出乱码解决
2006/11/25 PHP
php zlib压缩和解压缩swf文件的代码
2008/12/30 PHP
基于Snoopy的PHP近似完美获取网站编码的代码
2011/10/23 PHP
php连接oracle数据库及查询数据的方法
2014/12/29 PHP
php入门教程之Zend Studio设置与开发实例
2016/09/09 PHP
用JavaScript实现单继承和多继承的简单方法
2009/03/29 Javascript
innerhtml用法 innertext用法 以及innerHTML与innertext的区别
2009/10/26 Javascript
javascript instanceof 与typeof使用说明
2010/01/11 Javascript
JavaScript实现表格排序方法
2013/06/14 Javascript
不提示直接关闭网页窗口的JS示例代码
2013/12/17 Javascript
JavaScript学习小结(7)之JS RegExp
2015/11/29 Javascript
JavaScript事件类型中焦点、鼠标和滚轮事件详解
2016/01/25 Javascript
EasyUI中在表单提交之前进行验证
2016/07/19 Javascript
Bootstrap基本组件学习笔记之按钮组(8)
2016/12/07 Javascript
利用JS hash制作单页Web应用的方法详解
2017/10/10 Javascript
Javascript操作select控件代码实例
2020/02/14 Javascript
[03:56]DOTA2完美大师赛趣味视频之小鸽子和Mineski打台球
2017/11/24 DOTA
[01:03:50]DOTA2-DPC中国联赛 正赛 CDEC vs DLG BO3 第二场 2月7日
2021/03/11 DOTA
python itchat实现微信自动回复的示例代码
2017/08/14 Python
python 获取页面表格数据存放到csv中的方法
2018/12/26 Python
对python中的控制条件、循环和跳出详解
2019/06/24 Python
浅谈python出错时traceback的解读
2020/07/15 Python
使用CSS3来绘制一个月食图案
2015/07/18 HTML / CSS
法国一家芭蕾舞鞋公司:Repetto
2018/11/12 全球购物
ParcelABC西班牙:包裹运送和快递服务
2019/12/24 全球购物
酒店管理专业学生求职信
2013/09/27 职场文书
主治医师岗位职责
2013/12/10 职场文书
竞聘书怎么写,如何写?
2014/03/31 职场文书
卫校毕业生个人自我鉴定
2014/04/28 职场文书
应聘教师求职信
2014/07/19 职场文书
2014年社区重阳节活动策划方案
2014/09/16 职场文书
校园环境卫生倡议书
2015/04/29 职场文书
微信搭讪开场白
2015/05/28 职场文书
2019年“红色之旅”心得体会1000字(3篇)
2019/09/27 职场文书
PyTorch的Debug指南
2021/05/07 Python