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 相关文章推荐
在Zeus Web Server中安装PHP语言支持
Oct 09 PHP
php递归创建和删除文件夹的代码小结
Apr 13 PHP
优化PHP代码技巧的小结
Jun 02 PHP
浅析PHP中strlen和mb_strlen的区别
Aug 31 PHP
php序列化函数serialize() 和 unserialize() 与原生函数对比
May 08 PHP
PHP获取当前相对于域名目录的方法
Jun 26 PHP
PHP连接MSSQL方法汇总
Feb 05 PHP
php使用file函数、fseek函数读取大文件效率对比分析
Nov 04 PHP
php中static和const关键字用法分析
Dec 07 PHP
php获取用户真实IP和防刷机制的实例代码
Nov 28 PHP
asp函数split()对应php函数explode()
Feb 27 PHP
PHP防止sql注入小技巧之sql预处理原理与实现方法分析
Dec 13 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
一个用于MySQL的PHP XML类
2006/10/09 PHP
php 生成随机验证码图片代码
2010/02/08 PHP
解析php addslashes()与addclashes()函数的区别和比较
2013/06/24 PHP
PHP中UNIX时间戳和日期间的转换与计算实例
2014/11/19 PHP
mysql desc(DESCRIBE)命令实例讲解
2016/09/24 PHP
javascript 面向对象编程 万物皆对象
2009/09/17 Javascript
关于jquery.validate1.9.0前台验证的使用介绍
2013/04/26 Javascript
JavaScript中创建类/对象的几种方法总结
2013/11/29 Javascript
Javascript浮点数乘积运算出现多位小数的解决方法
2014/02/17 Javascript
jQuery插件pagewalkthrough实现引导页效果
2015/07/05 Javascript
bootstrap 设置checkbox部分选中效果
2017/04/20 Javascript
bootstrap多层模态框滚动条消失的问题
2017/07/21 Javascript
关于vue.js组件数据流的问题
2017/07/26 Javascript
SVG动画vivus.js库使用小结(实例代码)
2017/09/14 Javascript
详解如何去除vue项目中的#——History模式
2017/10/13 Javascript
Vue手把手教你撸一个 beforeEnter 钩子函数
2018/04/24 Javascript
JS实现使用POST方式发送请求
2019/08/30 Javascript
[01:57]DOTA2上海特锦赛小组赛解说单车采访花絮
2016/02/27 DOTA
在Linux系统上部署Apache+Python+Django+MySQL环境
2015/12/24 Python
Python设计模式之中介模式简单示例
2018/01/09 Python
对Python中type打开文件的方式介绍
2018/04/28 Python
对Python通过pypyodbc访问Access数据库的方法详解
2018/10/27 Python
Python datetime包函数简单介绍
2019/08/28 Python
Pandas直接读取sql脚本的方法
2021/01/21 Python
Web前端绘制0.5像素的几种方法
2017/08/11 HTML / CSS
vue项目实现分页效果
2021/03/24 Vue.js
办理信用卡工作证明
2014/01/11 职场文书
葬礼司仪主持词
2014/03/31 职场文书
建筑工地文明标语
2014/10/09 职场文书
2014年保卫部工作总结
2014/11/21 职场文书
2014年城管个人工作总结
2014/12/08 职场文书
语文复习计划
2015/01/19 职场文书
人工作失职检讨书
2015/05/05 职场文书
为自己工作观后感
2015/06/11 职场文书
如何解决goland,idea全局搜索快捷键失效问题
2022/04/03 Golang
Java中API的使用方法详情
2022/04/06 Java/Android