php fread读取文件注意事项


Posted in PHP onSeptember 24, 2016

php fread函数介绍

string fread ( int handle, int length )

fread() 从文件指针 handle 读取最多 length 个字节。该函数在读取完最多 length 个字节数,或到达 EOF 的时候,或(对于网络流)当一个包可用时,或(在打开用户空间流之后)已读取了 8192 个字节时就会停止读取文件。

fread()实例:

<?php
  $file = "data.txt";
  $fh = fopen($file, "rt");
  $userdata = fread($fh, filesize($file));
  fclose($fh);
?>

php使用fread需要注意的几点

1、fread读取写入大文件出错的解决办法

使用fread读取文件时如果超过php.ini中设置的最大内存使用值时 会提示错误,下面的方法解决读取大文件的问题:

<? 
  set_time_limit(0);//设置脚本执行时间无限长 
  $flie="flexbuilder_linux_install_a5_112409.bin";//大文件超过php.ini中的内存配置 
  $fp=fopen($flie,"r"); 
  $content=""; 
  $filename="123.bin";//存为新文件 
  $handle=fopen($filename,"a");//写入方式打开,将文件指针指向文件末尾。如果文件不存在则尝试创建之 
  while(!feof($fp)){//测试文件指针是否到了文件结束的位置 
    $content=fread($fp,1024); 
    fwrite($handle,$content); 
  } 
  fclose($fp); 
  fclose($handle); 
  echo "数据成功写入文件"; 
?>

2、php fread()是如何识别文件编码的

<?php
$handler=fopen('a.txt','rb')//二进制方式打开
$content=fread($handler,1024);
echo $content;
?>

fread以字符串形式返回,那它是如何识别a.txt使用的编码方式的呢,才能保证不乱码的呢?

PHP7.0以下的版本的文件操作中没有识别字符编码。

只是按字节数据输出,如果和php源码文件和输出的html的字符编码一致就能正确显示。

 3、fread读取文件总是会多一个空字符

$fileSize = filesize($filePath);
$handle = fopen($filePath, "rb"); 
while (!feof($handle)) {
    var_dump(fread($handle, $fileSize));
    //会多输出一次空字符
}

当我们使用上面代码读取文件,有时会多一个空字符。这是因为你是WINDOWS平台,文件是文本打开存储的内容,末尾会有一个特殊字节标识文件结束,你用rb打开自然就可以读到最后那个特殊字节了。用r打开,fgets读吧。

通过此文希望能帮助到大家,谢谢大家对本站的支持!

PHP 相关文章推荐
php 3行代码的分页算法(求起始页和结束页)
Oct 21 PHP
PHP 事件机制(2)
Mar 23 PHP
解析php入库和出库
Jun 25 PHP
php数组添加元素方法小结
Dec 20 PHP
php接口数据加密、解密、验证签名
Mar 12 PHP
Zend Framework生成验证码并实现验证码验证功能(附demo源码下载)
Mar 22 PHP
THinkPHP获取客户端IP与IP地址查询的方法
Nov 14 PHP
php each 返回数组中当前的键值对并将数组指针向前移动一步实例
Nov 22 PHP
PHP仿tp实现mvc框架基本设计思路与实现方法分析
May 23 PHP
PHP学习记录之数组函数
Jun 01 PHP
PHP上传图片到数据库并显示的实例代码
Dec 20 PHP
php经典趣味算法实例代码
Jan 21 PHP
一个简单安全的PHP验证码类、PHP验证码
Sep 24 #PHP
jquery不支持toggle()高(新)版本的问题解决
Sep 24 #PHP
php getcwd与dirname(__FILE__)区别详解
Sep 24 #PHP
mysql desc(DESCRIBE)命令实例讲解
Sep 24 #PHP
mysql alter table命令修改表结构实例详解
Sep 24 #PHP
Ajax和PHP正则表达式验证表单及验证码
Sep 24 #PHP
mysql查找删除重复数据并只保留一条实例详解
Sep 24 #PHP
You might like
php 常用算法和时间复杂度
2013/07/01 PHP
php文件缓存方法总结
2016/03/16 PHP
PHP多进程编程总结(推荐)
2016/07/18 PHP
Javascript 函数对象的多重身份
2009/06/28 Javascript
基于jquery的一个简单的脚本验证插件
2010/04/05 Javascript
jQuery之$(document).ready()使用介绍
2012/04/05 Javascript
用JS将搜索的关键字高亮显示实现代码
2013/11/08 Javascript
javascript实现带节日和农历的日历特效
2015/02/01 Javascript
jQuery插件bgStretcher.js实现全屏背景特效
2015/06/05 Javascript
深入学习JavaScript对象
2015/10/13 Javascript
JS实现点击事件统计的简单实例
2016/07/10 Javascript
js初始化验证实例详解
2016/11/26 Javascript
关于Node.js的events.EventEmitter用法介绍
2017/04/01 Javascript
Vue时间轴 vue-light-timeline的用法说明
2020/10/29 Javascript
JavaScript this关键字的深入详解
2021/01/14 Javascript
JavaScript代码实现微博批量取消关注功能
2021/02/05 Javascript
Nodejs 数组的队列以及forEach的应用详解
2021/02/25 NodeJs
详解Python的Django框架中inclusion_tag的使用
2015/07/21 Python
python游戏开发之视频转彩色字符动画
2019/04/26 Python
使用python实现简单五子棋游戏
2019/06/18 Python
Numpy对数组的操作:创建、变形(升降维等)、计算、取值、复制、分割、合并
2019/08/28 Python
python打开音乐文件的实例方法
2020/07/21 Python
Hotels.com英国:全球领先的酒店住宿提供商
2019/01/24 全球购物
2015年幼儿园毕业感言
2014/02/12 职场文书
运动会开幕式主持词
2014/03/28 职场文书
网上祭先烈心得体会
2014/09/01 职场文书
法人委托书范本格式
2014/09/15 职场文书
四风个人对照检查材料思想汇报
2014/09/25 职场文书
安全生产月宣传标语
2014/10/06 职场文书
2014年个人思想工作总结
2014/11/27 职场文书
2015年清明节活动总结
2015/02/09 职场文书
2015教师个人年度工作总结
2015/10/23 职场文书
MySQL COUNT函数的使用与优化
2021/05/10 MySQL
tensorflow中的梯度求解及梯度裁剪操作
2021/05/26 Python
《月歌。》宣布制作10周年纪念剧场版《RABBITS KINGDOM THE MOVIE》
2022/04/02 日漫
JS函数式编程实现XDM一
2022/06/16 Javascript