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与SQL注入攻击[三]
Apr 17 PHP
在PHP中操作Excel实例代码
Apr 29 PHP
PHP通过正则表达式下载图片到本地的实现代码
Sep 19 PHP
php数组函数序列之krsort()- 对数组的元素键名进行降序排序,保持索引关系
Nov 02 PHP
PHP查询数据库中满足条件的记录条数(两种实现方法)
Jan 29 PHP
正确的PHP匹配UTF-8中文的正则表达式
May 13 PHP
解决nginx不支持thinkphp中pathinfo的问题
Jul 21 PHP
WordPress特定文章对搜索引擎隐藏或只允许搜索引擎查看
Dec 31 PHP
PHP+MySQL统计该库中每个表的记录数并按递减顺序排列的方法
Feb 15 PHP
yii2高级应用之自定义组件实现全局使用图片上传功能的方法
Oct 08 PHP
PHP进程通信基础之信号
Feb 19 PHP
ThinkPHP下表单令牌错误与解决方法分析
May 20 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
SONY ICF-SW07收音机电路分析
2021/03/02 无线电
手把手教你使用DedeCms V3的在线采集图文教程
2007/04/03 PHP
PHP检测用户是否关闭浏览器的方法
2016/02/14 PHP
php通过执行CutyCapt命令实现网页截图的方法
2016/09/30 PHP
yii2实现分页,带搜索的分页功能示例
2017/01/07 PHP
PHP基于socket实现的简单客户端和服务端通讯功能示例
2017/07/10 PHP
PHP编程实现微信企业向用户付款的方法示例
2017/07/26 PHP
PHP队列场景以及实现代码实例详解
2021/02/26 PHP
JS Date函数整理方便使用
2013/10/23 Javascript
JSONP获取Twitter和Facebook文章数的具体步骤
2014/02/24 Javascript
分享一款基于jQuery的视频播放插件
2014/10/09 Javascript
JavaScript中textRange对象使用方法小结
2015/03/24 Javascript
用NODE.JS中的流编写工具是要注意的事项
2016/03/01 Javascript
BootStrap Table 分页后重新搜索问题的解决办法
2016/08/08 Javascript
JavaScript reduce和reduceRight详解
2016/10/24 Javascript
js print打印网页指定区域内容的简单实例
2016/11/01 Javascript
vue组件实践之可搜索下拉框功能
2018/11/25 Javascript
jQuery实现条件搜索查询、实时取值及升降序排序的方法分析
2019/05/04 jQuery
js实现超级玛丽小游戏
2020/03/18 Javascript
详解vue-flickity的fullScreen功能实现
2020/04/07 Javascript
python opencv 直方图反向投影的方法
2018/02/24 Python
Python WSGI的深入理解
2018/08/01 Python
Django的CVB实例详解
2020/02/10 Python
使用python的pyplot绘制函数实例
2020/02/13 Python
Nike瑞典官方网站:Nike.com (SE)
2018/11/26 全球购物
英国领先的名牌服装折扣零售商:Brown Bag Clothing
2019/01/08 全球购物
西安众合通用.net笔试题
2013/03/18 面试题
求职信的要素有哪些呢
2013/12/26 职场文书
人事专员岗位说明书
2014/07/29 职场文书
医药公司采购员岗位职责
2014/09/12 职场文书
学生检讨书
2015/01/27 职场文书
护士辞职信怎么写
2015/02/27 职场文书
2015年学校综合治理工作总结
2015/07/20 职场文书
小学体育教学随笔
2015/08/14 职场文书
六一儿童节致辞稿(3篇)
2019/07/11 职场文书
Windows中Redis安装配置流程并实现远程访问功能
2021/06/07 Redis