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 相关文章推荐
ajax+php打造进度条 readyState各状态
Mar 20 PHP
解析PHP多种序列化与反序列化的方法
Jun 06 PHP
解析PHP中一些可能会被忽略的问题
Jun 21 PHP
ThinkPHP CURD方法之data方法详解
Jun 18 PHP
php中opendir函数用法实例
Nov 15 PHP
Linux下从零开始安装配置Nginx服务器+PHP开发环境
Dec 21 PHP
CodeIgniter配置之autoload.php自动加载用法分析
Jan 20 PHP
Yii2简单实现多语言配置的方法
Jul 23 PHP
PHP读取文件的常见几种方法
Nov 03 PHP
利用Homestead快速运行一个Laravel项目的方法详解
Nov 14 PHP
基于php双引号中访问数组元素报错的解决方法
Feb 01 PHP
Laravel 5.1 框架Blade模板引擎用法实例分析
Jan 04 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 4.2书写安全的脚本
2006/10/09 PHP
SESSION信息保存在哪个文件目录下以及能够用来保存什么类型的数据
2012/06/17 PHP
详解Grunt插件之LiveReload实现页面自动刷新(两种方案)
2015/07/31 PHP
php 实现进制相互转换
2016/04/07 PHP
PHP 接入微信扫码支付总结(总结篇)
2016/11/03 PHP
javascript:void(0)的问题使用探讨
2014/04/10 Javascript
移动端JQ插件hammer使用详解
2015/07/03 Javascript
Jquery+Ajax+PHP+MySQL实现分类列表管理(上)
2015/10/28 Javascript
JS实现带提示的星级评分效果完整实例
2015/10/30 Javascript
基于 Node.js 实现前后端分离
2016/04/23 Javascript
JavaScript制作弹出层效果
2016/12/02 Javascript
bootstrap如何让dropdown menu按钮式下拉框长度一致
2017/04/10 Javascript
浅谈Angular路由复用策略
2017/10/04 Javascript
vue下history模式刷新后404错误解决方法
2018/08/18 Javascript
详解Vue一个案例引发「内容分发slot」的最全总结
2018/12/02 Javascript
layui table 获取分页 limit的方法
2019/09/20 Javascript
使用 Element UI Table 的 slot-scope方法
2019/10/10 Javascript
关于Vue中axios的封装实例详解
2019/10/20 Javascript
举例讲解Python中is和id的用法
2015/04/03 Python
浅谈python编译pyc工程--导包问题解决
2019/03/20 Python
Python中新式类与经典类的区别详析
2019/07/10 Python
python调用其他文件函数或类的示例
2019/07/16 Python
Python通过2种方法输出带颜色字体
2020/03/02 Python
在Windows上安装和配置 Jupyter Lab 作为桌面级应用程序教程
2020/04/22 Python
python连接mysql有哪些方法
2020/06/24 Python
一款纯css3实现的鼠标经过按钮特效教程
2014/11/09 HTML / CSS
美国牙科折扣计划:DentalPlans.com
2019/08/26 全球购物
中西医专业毕业生职业规划书
2014/02/24 职场文书
高三毕业典礼主持词
2014/03/27 职场文书
大学生自我评价200字(4篇)
2014/09/17 职场文书
银行先进个人总结
2015/02/15 职场文书
兴趣班停课通知
2015/04/24 职场文书
nginx location中多个if里面proxy_pass的方法
2021/03/31 Servers
详解JAVA的控制语句
2021/11/11 Java/Android
windows11怎么查看自己安装的版本号? win11版本号的查看方法
2021/11/21 数码科技
【海涛七七解说】DCG第二周:DK VS 天禄
2022/04/01 DOTA