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学习笔记之三 数据库基本操作
Jan 17 PHP
防止用户利用PHP代码DOS造成用光网络带宽
Mar 01 PHP
php数组函数序列之end() - 移动数组内部指针到最后一个元素,并返回该元素的值
Oct 31 PHP
执行、获取远程代码返回:file_get_contents 超时处理的问题详解
Jun 25 PHP
php实现cc攻击防御和防止快速刷新页面示例
Feb 13 PHP
php简单图像创建入门实例
Jun 10 PHP
浅谈php7的重大新特性
Oct 23 PHP
使用WordPress发送电子邮件的相关PHP函数用法解析
Dec 15 PHP
Yii统计不同类型邮箱数量的方法
Oct 18 PHP
PHP 年月日的三级联动实例代码
May 24 PHP
PHP hebrev()函数用法讲解
Feb 21 PHP
windows 2008r2+php5.6.28环境搭建详细过程
Jun 18 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
印尼林东PWN黄金曼特宁咖啡豆:怎么冲世界上最醇厚的咖啡冲煮教程
2021/03/03 冲泡冲煮
解析PHP中ob_start()函数的用法
2013/06/24 PHP
PHP判断变量是否为0的方法
2014/02/08 PHP
php微信支付之APP支付方法
2015/03/04 PHP
php实现简易聊天室应用代码
2015/09/23 PHP
PHP邮箱验证示例教程
2016/06/01 PHP
PHP调用全国天气预报数据接口查询天气示例
2019/02/20 PHP
深入理解JavaScript系列(14) 作用域链介绍(Scope Chain)
2012/04/12 Javascript
jQuery 删除或是清空某个HTML元素示例
2014/08/04 Javascript
使用AngularJS 应用访问 Android 手机的图片库
2015/03/24 Javascript
jquery插件tytabs.jquery.min.js实现渐变TAB选项卡效果
2015/08/25 Javascript
JavaScript和HTML DOM的区别与联系及Javascript和DOM的关系
2015/11/15 Javascript
JS实现的颜色实时渐变效果完整实例
2016/03/25 Javascript
JavaScript中removeChild 方法开发示例代码
2016/08/15 Javascript
给Easyui-Datebox设置隐藏或者不可用的解决方法
2017/05/26 Javascript
基于Vue 2.0的模块化前端 UI 组件库小结
2017/12/21 Javascript
jQuery实现的简单对话框拖动功能示例
2018/06/05 jQuery
IntelliJ IDEA编辑器配置vue高亮显示
2019/09/26 Javascript
element实现合并单元格通用方法
2019/11/13 Javascript
[01:06:59]完美世界DOTA2联赛PWL S2 Magma vs FTD 第一场 11.29
2020/12/02 DOTA
python检查URL是否正常访问的小技巧
2017/02/25 Python
Python实现PS图像抽象画风效果的方法
2018/01/23 Python
python爬虫之urllib,伪装,超时设置,异常处理的方法
2018/12/19 Python
python使用参数对嵌套字典进行取值的方法
2019/04/26 Python
Python实现数值积分方式
2019/11/20 Python
Python如何爬取qq音乐歌词到本地
2020/06/01 Python
Python3如何在服务器打印资产信息
2020/08/27 Python
20行Python代码实现一款永久免费PDF编辑工具的实现
2020/08/27 Python
利用Python优雅的登录校园网
2020/10/21 Python
高街生活方式全球在线商店:AZBRO
2017/08/26 全球购物
Vivo俄罗斯官方在线商店:中国智能手机品牌
2019/10/04 全球购物
PHP经典面试题
2016/09/03 面试题
文件中有一组整数,要求排序后输出到另一个文件中
2012/01/04 面试题
什么是跨站脚本攻击
2014/12/11 面试题
军训教官感言
2014/03/02 职场文书
详解PHP Swoole与TCP三次握手
2021/05/27 PHP