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加入ftp扩展的解决方法
Feb 07 PHP
php函数实现判断是否移动端访问
Mar 03 PHP
PHP使用ODBC连接数据库的方法
Jul 18 PHP
CI(CodeIgniter)框架实现图片上传的方法
Mar 24 PHP
php传值方式和ajax的验证功能
Mar 27 PHP
PHP静态延迟绑定和普通静态效率的对比
Oct 20 PHP
在Laravel中使用DataTables插件的方法
May 29 PHP
PHP静态方法和静态属性及常量属性的区别与介绍
Mar 22 PHP
YII框架实现自定义第三方扩展操作示例
Apr 26 PHP
Laravel Eloquent分表方法并使用模型关联的实现
Nov 25 PHP
gearman中任务的优先级和返回状态实例分析
Feb 27 PHP
深入解析PHP底层机制及相关原理
Dec 11 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下利用header()函数设置浏览器缓存的代码
2010/09/01 PHP
php中选择什么接口(mysql、mysqli)访问mysql
2013/02/06 PHP
php微信公众平台开发类实例
2015/04/01 PHP
详解WordPress中的头像缓存和代理中的缓存更新方法
2016/03/01 PHP
PHP中多线程的两个实现方法
2016/10/14 PHP
Centos 6.5下PHP 5.3安装ffmpeg扩展的步骤详解
2017/03/02 PHP
php获取ip及网址的简单方法(必看)
2017/04/01 PHP
PHP支付宝当面付2.0代码
2018/12/21 PHP
奉献给JavaScript初学者的编写开发的七个细节
2011/01/11 Javascript
使用Post提交时须将空格转换成加号的解释
2013/01/14 Javascript
JavaScript中用字面量创建对象介绍
2014/12/31 Javascript
canvas实现钟表效果
2017/02/13 Javascript
JavaScript实现元素滚动条到达一定位置循环追加内容
2017/12/28 Javascript
Node.js中DNS模块学习总结
2018/02/28 Javascript
vue ssr 指南详读
2018/06/29 Javascript
JS 中可以提升幸福度的小技巧(可以识别更多另类写法)
2018/07/28 Javascript
JavaScript函数式编程(Functional Programming)高阶函数(Higher order functions)用法分析
2019/05/22 Javascript
Vue Components 数字键盘的实现
2019/09/18 Javascript
layui实现图片虚拟路径上传,预览和删除的例子
2019/09/25 Javascript
JS+css3实现幻灯片轮播图
2020/08/14 Javascript
python超简单解决约瑟夫环问题
2015/05/12 Python
python定时利用QQ邮件发送天气预报的实例
2017/11/17 Python
python爬取淘宝商品销量信息
2018/11/16 Python
浅谈pytorch中的BN层的注意事项
2020/06/23 Python
解决运行django程序出错问题 'str'object has no attribute'_meta'
2020/07/15 Python
python语音识别指南终极版(有这一篇足矣)
2020/09/09 Python
美国便宜的横幅和标志印刷在线:Best of Signs
2019/05/29 全球购物
JVM是一个编译程序还是解释程序
2012/09/11 面试题
财务会计毕业生自荐信
2013/11/02 职场文书
心理学专业毕业生推荐信范文
2013/11/21 职场文书
求职简历的自我评价
2014/01/31 职场文书
《记金华的双龙洞》教学反思
2014/04/19 职场文书
2014年国庆标语
2014/06/30 职场文书
医院领导班子整改方案
2014/10/01 职场文书
财务会计岗位职责
2015/02/03 职场文书
生死抉择观后感
2015/06/09 职场文书