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 相关文章推荐
不用GD库生成当前时间的PNG格式图象的程序
Oct 09 PHP
php数组应用之比较两个时间的相减排序
Aug 18 PHP
php array_search() 函数使用
Apr 13 PHP
PHP+Ajax异步通讯实现用户名邮箱验证是否已注册( 2种方法实现)
Dec 28 PHP
解决文件名解压后乱码的问题 将文件名进行转码的代码
Jan 10 PHP
PHP遍历数组的几种方法
Mar 22 PHP
PHP URL参数获取方式的四种例子
Feb 28 PHP
ThinkPHP使用UTFWry地址库进行IP定位实例
Apr 01 PHP
php读取csv文件并输出的方法
Mar 14 PHP
完美解决phpdoc导出文档中@package的warning及Error的错误
May 17 PHP
Thinkphp5.0框架使用模型Model的获取器、修改器、软删除数据操作示例
Oct 11 PHP
基于php伪静态的实现方法解析
Jul 31 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数组对百万数据进行排除重复数据的实现代码
2010/06/08 PHP
解析isset与is_null的区别
2013/08/09 PHP
destoon各类调用汇总
2014/06/20 PHP
php使用cookie保存登录用户名的方法
2015/01/26 PHP
php中smarty模板条件判断用法实例
2015/06/11 PHP
PHP实现的数独求解问题示例
2017/04/18 PHP
AngularJS使用ngOption实现下拉列表的实例代码
2016/01/23 Javascript
JS判断字符串字节数并截取长度的方法
2016/03/05 Javascript
bootstrap输入框组代码分享
2016/06/07 Javascript
jQuery 翻页组件yunm.pager.js实现div局部刷新的思路
2016/08/11 Javascript
javascript this详细介绍
2016/09/19 Javascript
微信小程序开发之数据存储 参数传递 数据缓存
2017/04/13 Javascript
jQuery自定义多选下拉框效果
2017/06/19 jQuery
如何获取vue单文件自身源码路径
2019/05/06 Javascript
vue+elementUI实现表单和图片上传及验证功能示例
2019/05/14 Javascript
利用Vue实现简易播放器的完整代码
2020/12/30 Vue.js
详解常用查找数据结构及算法(Python实现)
2016/12/09 Python
使用python实现ANN
2017/12/20 Python
python定向爬取淘宝商品价格
2018/02/27 Python
使用tensorflow实现线性svm
2018/09/07 Python
使用python求解二次规划的问题
2020/02/29 Python
Chantelle仙黛尔内衣美国官网:法国第一品牌内衣
2018/07/26 全球购物
计算机求职信
2013/12/01 职场文书
行政前台岗位职责
2013/12/04 职场文书
校园安全演讲稿
2014/05/09 职场文书
小学英语教师先进事迹
2014/05/28 职场文书
家长会标语
2014/06/24 职场文书
实习生矿工检讨书
2014/10/13 职场文书
教师正风肃纪剖析材料
2014/10/20 职场文书
2014年禁毒工作总结
2014/11/24 职场文书
销售经理工作检讨书
2015/02/19 职场文书
2015年高二班主任工作总结
2015/05/25 职场文书
运动会100米广播稿
2015/08/19 职场文书
房地产置业顾问工作总结
2015/10/23 职场文书
详解CocosCreator项目结构机制
2021/04/14 Javascript
【DOTA2】总决赛血虐~ XTREME GAMING vs MAGMA - OGA DOTA PIT 2022 CN
2022/04/02 DOTA