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函数解决SQL injection
Oct 09 PHP
mysql_fetch_assoc和mysql_fetch_row的功能加起来就是mysql_fetch_array
Jan 15 PHP
PHP详细彻底学习Smarty
Mar 27 PHP
PHP与Java进行通信的实现方法
Oct 21 PHP
php中socket的用法详解
Oct 24 PHP
如何解决PHP无法实现多线程的问题
Sep 25 PHP
PHP+JS三级菜单联动菜单实现方法
Feb 24 PHP
php解析xml 的四种简单方法(附实例)
Jul 11 PHP
php数组指针操作详解
Feb 14 PHP
PHP排序算法之堆排序(Heap Sort)实例详解
Apr 21 PHP
PHP封装的mysqli数据库操作类示例
Feb 16 PHP
thinkphp框架表单数组实现图片批量上传功能示例
Apr 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
人族 Terran 基本策略
2020/03/14 星际争霸
php ignore_user_abort与register_shutdown_function 使用方法
2009/06/14 PHP
PHP CURL post数据报错 failed creating formpost data
2016/10/16 PHP
imagettftext() 失效,不起作用
2021/03/09 PHP
Javascript开发包大全整理
2006/12/22 Javascript
jQuery使用手册之 事件处理
2007/03/24 Javascript
ExtJS 工具栏 分页事件参数
2010/03/05 Javascript
Javascript表格翻页效果的具体实现
2013/10/05 Javascript
javascript 小数取整简单实现方式
2014/05/30 Javascript
JavaScript中合并数组的N种方法
2014/09/16 Javascript
jquery实现图片上传之前预览的方法
2015/07/11 Javascript
不依赖Flash和任何JS库实现文本复制与剪切附源码下载
2015/10/09 Javascript
如何用js实现鼠标向上滚动时浮动导航
2016/07/18 Javascript
AngularJS基础 ng-disabled 指令详解及简单示例
2016/08/01 Javascript
JS实现密码框的显示密码和隐藏密码功能示例
2016/12/26 Javascript
vue+ElementUI实现订单页动态添加产品数据效果实例代码
2017/07/13 Javascript
vue轮播图插件vue-concise-slider的使用
2018/03/13 Javascript
Python实现3行代码解简单的一元一次方程
2014/08/18 Python
用Python实现一个简单的多线程TCP服务器的教程
2015/05/05 Python
Python判断以什么结尾以什么开头的实例
2018/10/27 Python
tensorflow之变量初始化(tf.Variable)使用详解
2020/02/06 Python
AUC计算方法与Python实现代码
2020/02/28 Python
Python图像处理之膨胀与腐蚀的操作
2021/02/07 Python
美国知名男士服饰品牌:Brooks Brothers(布克兄弟)
2016/08/25 全球购物
会计专业的自荐信
2013/12/12 职场文书
七年级生物教学反思
2014/01/30 职场文书
工商管理专业大学生职业生涯规划范文
2014/03/09 职场文书
财产公证书格式
2014/04/10 职场文书
小学生母亲节演讲稿
2014/05/07 职场文书
会议欢迎标语
2014/06/30 职场文书
小学学习雷锋活动总结
2014/07/03 职场文书
市场调研项目授权委托书范本
2014/10/04 职场文书
数据库之SQL技巧整理案例
2021/07/07 SQL Server
利用 JavaScript 构建命令行应用
2021/11/17 Javascript
深入浅出讲解Java8函数式编程
2022/01/18 Java/Android
动画电影《擅长捉弄人的高木同学》6月10日上映!
2022/03/20 日漫