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 09 PHP
php下实现伪 url 的超简单方法[转]
Sep 24 PHP
一步一步学习PHP(1) php开发环境配置
Feb 15 PHP
php上传文件中文文件名乱码的解决方法
Nov 01 PHP
使用php检测用户当前使用的浏览器是否为IE浏览器
Dec 03 PHP
php求两个目录的相对路径示例(php获取相对路径)
Mar 27 PHP
PHP包含文件函数include、include_once、require、require_once区别总结
Apr 05 PHP
php内存缓存实现方法
Jan 24 PHP
PHP微信开发之根据用户回复关键词\位置返回附近信息
Jun 24 PHP
详解PHP神奇又有用的Trait
Mar 25 PHP
php 使用 __call实现重载功能示例
Nov 18 PHP
关于PhpStorm设置点击编辑文件自动定位源文件的实现方式
Dec 30 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 COOKIE立即生效,不用刷新就可以使用
2011/03/09 PHP
PHP数组传递是值传递而非引用传递概念纠正
2013/01/31 PHP
PHP浮点比较大小的方法
2016/02/14 PHP
thinkPHP中钩子的使用方法实例分析
2017/11/16 PHP
W3C Group的JavaScript1.8 新特性介绍
2009/05/19 Javascript
锋利的jQuery 要点归纳(一) jQuery选择器
2010/03/21 Javascript
jquery属性过滤选择器使用示例
2013/06/18 Javascript
原生javascript图片自动或手动切换示例附演示源码
2013/09/04 Javascript
node.js中的fs.futimesSync方法使用说明
2014/12/17 Javascript
尝试动手制作javascript放大镜效果
2015/12/25 Javascript
JavaScript入门系列之知识点总结
2016/03/24 Javascript
跨域资源共享 CORS 详解
2016/04/26 Javascript
jQuery动态增减行的实例代码解析(推荐)
2016/12/05 Javascript
关于jQuery里prev()的简单操作代码
2017/10/27 jQuery
vuex与组件联合使用的方法
2018/05/10 Javascript
vue 实现axios拦截、页面跳转和token 验证
2018/07/17 Javascript
vue实现重置表单信息为空的方法
2018/09/29 Javascript
解决ele ui 表格表头太长问题的实现
2019/11/13 Javascript
bootstrapValidator表单校验、更改状态、新增、移除校验字段的实例代码
2020/05/19 Javascript
python语言使用技巧分享
2016/05/31 Python
详解python中asyncio模块
2018/03/03 Python
新手常见6种的python报错及解决方法
2018/03/09 Python
python实现汽车管理系统
2018/11/30 Python
实例讲解Python3中abs()函数
2019/02/19 Python
opencv之颜色过滤只留下图片中的红色区域操作
2020/06/05 Python
Schecker荷兰:狗狗用品和配件
2019/06/06 全球购物
新学期家长寄语
2014/01/19 职场文书
超市店庆活动方案
2014/08/31 职场文书
在教室放鞭炮的检讨书
2014/09/28 职场文书
初中毕业生感言
2015/07/31 职场文书
公司车队管理制度
2015/08/04 职场文书
幼儿园2016圣诞节活动总结
2016/03/31 职场文书
Python读取文件夹下的所有文件实例代码
2021/04/02 Python
Python爬取某拍短视频
2021/06/11 Python
Python常用配置文件ini、json、yaml读写总结
2021/07/09 Python
ECharts transform数据转换和dataZoom在项目中使用
2022/12/24 Javascript